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

驗證模式的json列

Braxx
因素二世

我有一個與col2 dataframe像下麵的鍵-值對。我想過濾col2隻有行有效的模式。

df可能有很多的對,有時更少,有時更多,這是罰款,隻要結構很好。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 "})

1接受解決方案

接受的解決方案

Braxx
因素二世

最後解決。

損壞的行可以標記為1,那麼易過濾掉

#定義一個模式從pyspark.sql col2。類型進口StructType StructField json_schema = ArrayType (StructType ([StructField(“名字”,StringType(),可空= True), StructField(“價值”,StringType(),可空= True)))) # from_json用於驗證col2是否有有效的模式。如果是- > correct_json = col2,如果沒有- > correct_json = null #空from_json返回的默認值在創建有效的json不能損壞json被標記為1 #行通過檢查之前和之後的驗證結果。如果col2不是零和驗證後成為零這意味著json的df =數據\ .withColumn (“correct_json from_json(坳(“col2”), json_schema)) \ .withColumn (“json_flag”,當(坳(col2) .isNotNull () & (“correct_json”) .isNull上校(),1).otherwise (0)) \ .drop (“correct_json”)顯示(df)

在原帖子查看解決方案

12個回複12

Kaniz
社區經理
社區經理

嗨@Bartosz Wachocki,看看你的同行在社區中有一個回答你的問題。否則我將盡快給你回電。謝謝。

werners1
尊敬的貢獻者三世

謝謝。

當我閱讀此方法需要csv或json作為源和實現的同時讀取文件。模式必須定義在整個文件不是一個特定列。就我個人而言,我與一個json dataframe列。所以看起來是不同的

werners1
尊敬的貢獻者三世

所以你有這些數據已經用鑲花嗎?

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

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

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

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

Baidu
map