2016-05-24 65 views
0

我在網上搜索了這裏,但無法找到任何解決方案來解決我遇到的問題。使用MapType架構將PySpark DataFrame寫入實木複合格式

首先,我使用PySpark。我有數據作爲DataFrame,我想寫成實木複合地板。該模式是由什麼決定的是這樣的:

df_schema = StructType([StructField('p_id', StringType(), True), 
         StructField('c_id_map', MapType(StringType(), StringType(), True), True), 
         StructField('d_id', LongType(), True)]) 

我的數據確實有這些列和c_id_map是具有關鍵要麼是「E_ID」或「R_ID」,這是一個字符串值的Python字典(一些標識符)。

df = sqlContext.createDataFrame(hour_filtered_rdd, df_schema) 
dfwriter = df.write 
dfwriter.mode('overwrite') 
dfwriter.format('parquet') 
dfwriter.parquet(output_path) 

鑲木文件寫出來,但是當我使用實木複合地板的工具來查看我看到的內容,該c_id_map始終是空的(即沒有打印任何內容:

我使用類似的寫入數據從貓命令),如:

c_id_map: 

我說,數據存在字典之前寫作。所有其他數據類型(字符串和長整數)都被正確寫出。作爲解決方法,我將地圖數據存儲爲JSON字符串,但我想了解發生了什麼問題。

對此的任何想法?或者,鑲木地板工具的問題是否無法顯示地圖數據?

回答

0

我很笨,不知道我是怎麼錯過這個的。只是忽略了問題,因爲根本沒有問題。數據出現在鑲木地板文件中,並且可以使用鑲木工具實用程序正確地看到它。

從拼花工具cat命令的輸出看起來像:

c_id_map: 
.key_value: 
..key = e_id 
..value = 6710c982 
相關問題