【问题标题】:scala convert into dataframe from Mapscala从Map转换为数据框
【发布时间】:2017-09-23 03:40:54
【问题描述】:

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

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 的 Map ..like col 1 和 ref 可以有许多其他列,如 col2、col3 ...如果 Map 中有更多列,则在 schema name 中会提到相同的列。 架构名称变量应该用于创建结构,input5.row(Map) 应该是数据源...因为架构名称中的列数可以是 100,同样适用于 Input5.row 中的数据

【问题讨论】:

    标签: scala


    【解决方案1】:

    这是这个的代码

    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 将成为数据框。

    【讨论】:

      【解决方案2】:

      你可以直接调用toDF。

      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...|
      +----------+-------+---+--------------------+
      

      【讨论】:

      • 目标数据框应该仅来自输入 5 的 Map ..like col 1 和 ref 可以有许多其他列,如 Map 中的 col2、col3 ......如果 Map 中有更多列相同的列会在架构名称中提及...数据框结构应从架构名称中获取
      猜你喜欢
      • 2021-11-25
      • 1970-01-01
      • 2016-08-27
      • 2010-11-04
      • 1970-01-01
      • 2023-02-02
      • 2015-01-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多