取消
顯示的結果
而不是尋找
你的意思是:

map_keys()返回一個空數組在三角洲住表管道。

d_meaker
新的貢獻者二世

我們正在爆炸類型列映射到多個列基於映射的鍵列。這個過程的一部分是提取地圖類型的鍵列json_map如下代碼片段所示。按預期執行的代碼運行時的筆記本,但運行時返回一個空數組在三角洲住表管道。以下是代碼片段:

鍵= (df .select (map_keys (“json_map”)) .distinct () .collect ())

有人知道為什麼這段代碼將在筆記本電腦中運行像預期的那樣,但返回空數組在三角洲住表管道嗎?還是有另一種方法來提取的不同領域或json列映射到單獨的列?

3回複3

匿名
不適用

@De Vos Meaker:

一個潛在的原因代碼在筆記本工作但δ生活表中返回一個空數組管道是在數據處理中可能存在差異。可能的管道處理不同的數據沒有任何鑰匙json_map列,導致空數組結果。

至於替代方法提取的不同領域或json列映射到單獨的列,您可以嚐試使用

getItem

在PySpark函數。下麵是一個示例代碼片段:

從pyspark.sql。功能導入坳df = df。選擇(坳(json_map) .getItem .alias (“key1”) (“column1”),坳(json_map) .getItem .alias (“key2”) (“column2”),坳(json_map) .getItem .alias (“key3”) (“column3”))

這段代碼創建新列column1、column2 column3通過提取密鑰的值“key1”,“key2”,“key3”json_map列使用getItem函數。您可以定製這個代碼中提取所需要的特定的鍵。

d_meaker
新的貢獻者二世

嗨@Suteja卡努裏人,

謝謝你們的回應和解釋。上麵所示的代碼我已經不是我們使用的片段。請查收下麵的片段。我們動態地提取地圖的密鑰,然後使用getitem()列的字段,與關鍵名稱的列的名稱:

df = df。withColumn (column_name from_json (column_name MapType (StringType (), StringType())))鍵= (df .select (map_keys (column_name)) .distinct () .collect ()) df = df。選擇([坳(column_name) .getItem (k) .alias k (k)的鍵]+ [filter_column])

我已經檢查了數據,其相同。你知道支持動態的方式在三角洲住表嗎?

匿名
不適用

@De Vos Meaker:

由於三角洲住表是建立在三角洲湖之上,其目的是使用Apache火花,動態的方式提取鍵的映射,使列字段使用getItem ()

應該支持三角洲生活表。然而,請測試代碼是否按預期工作。

歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map