[英]Defining new schema for Spark Rows
我有一個DataFrame,其一列包含一個JSON字符串。 到目前為止,我已經按照JavaRDD.map
方法的要求實現了Function
接口: Function<Row,Row>()
。 在此函數中,我將解析JSON,並創建一個新行,其附加列來自JSON中的值。 例如:
原始行:
+------+-----------------------------------+
| id | json |
+------+-----------------------------------+
| 1 | {"id":"abcd", "name":"dmux",...} |
+------------------------------------------+
應用我的功能后:
+------+----------+-----------+
| id | json_id | json_name |
+------+----------+-----------+
| 1 | abcd | dmux |
+-----------------+-----------+
嘗試從返回的JavaRDD創建新的DataFrame時遇到麻煩。 現在有了這些新行,我需要創建一個架構。 模式高度依賴於JSON的結構,因此我試圖找出一種將模式數據與Row
對象一起從函數傳遞回來的方法。 我不能使用broadcast
變量,因為SparkContext不會傳遞到函數中。
除了遍歷Function
調用程序中的每一行外,我還有哪些選擇?
您可以創建一個StructType
。 這是Scala
,但工作方式相同:
val newSchema = StructType(Array(
StructField("id", LongType, false),
StructField("json_id", StringType, false),
StructField("json_name", StringType, false)
))
val newDf = sqlContext.createDataFrame(rdd, newSchema)
順便說一句,您需要確保rdd
的類型為RDD[Row]
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.