我有一個與col2 dataframe像下麵的鍵-值對。我想過濾col2隻有行有效的模式。
可能有很多的對,有時更少,有時更多,這是罰款,隻要結構很好。col2也允許null。
錯誤的價值觀就像在例4和5的“名稱”或“價值”是缺失或缺乏括號[]
模式:
[{“名稱”:“aa”、“價值”:“abc”},{“名稱”:“bb”、“價值”:“12”},{“名稱”:“cc”、“價值”:“3”}]
數據樣本:
col1 col2 1[{“名稱”:“aaa”、“價值”:“5”},{" name ": " bbb ", " value ": " 500 "},{"名稱":“ccc”、“價值”:" 300 "}]2[{“名稱”:“aaa”、“價值”:“5”},{" name ": " bbb ", " value ": " 500 "}) 3 4{“名稱”:“aaa”、“價值”:“5”},{" name ": " bbb ", " value ": " 500 "} 5[{“名稱”:“aaa”}, {" name ": " bbb ", " value ": " 500 "})
不是一個文字回答:
https://docs.m.eheci.com/spark/latest/dataframes-datasets/complex-nested-data.html
//m.eheci.com/blog/2017/02/23/working-complex-data-formats-structured-streaming-apache-spar..。
你可以嚐試使用定義實現這一模式,然後讀表,或者正則表達式等更先進的技術。
有一些選項在處理嵌套數據正如您將看到的。
你甚至可以使用三角洲湖和檢查約束。
(https://docs.microsoft.com/en-us/azure/databricks/delta/delta-constraints)
驗證結構是正確的我試著json.load。它應該利用錯誤是錯誤的或者真實的如果它是正確的。然後,我隻會篩選真正的。annihilate我對下麵的錯誤代碼,當解決可以為我工作。
“TypeError:列不是iterable”
def is_json (myjson):: x myjson: json.loads (x)除了ValueError e: \ .withColumn返回False返回True df =數據(“Col3 is_json (col (“Col2”))) \ .filter(坳(Col3) = = True)