Querying Spark SQL DataFrame with complex types

后端 未结 3 1128
难免孤独
难免孤独 2020-11-22 01:18

How Can I query an RDD with complex types such as maps/arrays? for example, when I was writing this test code:

case class Test(name: String, map: Map[String,         


        
3条回答
  •  南旧
    南旧 (楼主)
    2020-11-22 02:02

    Once You convert it to DF, u can simply fetch data as

      val rddRow= rdd.map(kv=>{
        val k = kv._1
        val v = kv._2
        Row(k, v)
      })
    
    val myFld1 =  StructField("name", org.apache.spark.sql.types.StringType, true)
    val myFld2 =  StructField("map", org.apache.spark.sql.types.MapType(StringType, StringType), true)
    val arr = Array( myFld1, myFld2)
    val schema = StructType( arr )
    val rowrddDF = sqc.createDataFrame(rddRow, schema)
    rowrddDF.registerTempTable("rowtbl")  
    val rowrddDFFinal = rowrddDF.select(rowrddDF("map.one"))
    or
    val rowrddDFFinal = rowrddDF.select("map.one")
    

提交回复
热议问题