2017-09-22 47 views
0

如何使用schemanames中提到的架构详细信息将input5数据格式转换为dataFrame ..收敛应该是动态的,而不使用Row(r(0),r(1)) 列的数量可以增加或减少输入和架构,因此代码应该是动态scala从地图转换为数据框

case class Entry(schemaName: String, updType: String, ts: Long, row: Map[String, String]) 

val input5 = List(Entry("a","b",0,Map("col1 " -> "0000555", "ref" -> "2017-08-12 12:12:12.266528"))) 

val schemanames= "col1,ref"  

目标数据帧应该只有从地图输入5 ..like第1栏和ref可以有很多其它列COL2一样,COL3 ...如果有更多的列映射相同的列将在模式名称中提及。 应该使用模式名称变量来创建结构,input5.row(Map)应该是数据源...因为模式名称中的列数可以为100,同样适用于Input5.row中的数据

回答

0

这里是代码为

case class Entry(schemaName: String, updType: String, ts: Long, row: Map[String, String]) 
val input5 = List(Entry("a","b",0,Map("col1 " -> "0000555", "ref" -> "2017-08-12 12:12:12.266528"))) 
import spark.implicits._ 
val df = input.toDF 

df将成为数据帧。

0

您可以直接致电DF。

scala> case class Entry(schemaName: String, updType: String, ts: Long, row: Map[String, String]) 
defined class Entry 
scala> val input5 = List(Entry("a","b",0,Map("col1 " -> "0000555", "ref" -> "2017-08-12 12:12:12.266528"))) 
input5: List[Entry] = List(Entry(a,b,0,Map(col1 -> 0000555, ref -> 2017-08-12 12:12:12.266528))) 

scala> val df = input5.toDF 
df: org.apache.spark.sql.DataFrame = [schemaName: string, updType: string ... 2 more fields] 

scala> df.show 
+----------+-------+---+--------------------+ 
|schemaName|updType| ts|     row| 
+----------+-------+---+--------------------+ 
|   a|  b| 0|Map(col1 -> 0000...| 
+----------+-------+---+--------------------+ 
+0

目标数据帧应该只来自输入5的地图像..如col 1和ref可以有许多其他列如col2,col3在Map ...如果在Map中有更多的列将提及相同的列在模式名称中...应该从模式名称中选取数据框架结构 –

相关问题