簡體   English   中英

定義Spark行的新架構

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM