@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函數。您可以定製這個代碼中提取所需要的特定的鍵。
嗨@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])
我已經檢查了數據,其相同。你知道支持動態的方式在三角洲住表嗎?