我與Spark-Scala和接收數據在不同的格式(. csv / .xlxs /。txt等),當我試著讀/寫數據來自不同來源的任何數據庫,記錄了許多拒絕由於各種問題(特殊字符,源和目標數據類型差異表等。在這種情況下,我的整個加載失敗。
我想要的是一種方法來捕捉拒絕行成單獨的文件,繼續加載剩餘的正確記錄在數據庫表中。
基本上不停止程序的流由於一些行,抓住這些問題造成的行。
的例子,
我讀了與98完美行和2 . csv腐敗行,我想讀/寫98行到數據庫中並向用戶發送2腐敗行作為一個文件。
注:我從用戶接收數據所以我不能定義一個模式,我需要一個動態的方式讀取文件並過濾掉腐敗文件中的數據。
您可以將損壞的記錄保存到單獨的文件:
.option (“badRecordsPath”、“/ tmp / badRecordsPath”)
允許火花過程損壞的行:
.option(“模式”,“寬容”)
您還可以創建特殊的列的記錄:
df = spark.read.csv (“/ tmp / inputFile。csv”,標題= True,模式= dataSchema enforceSchema = True, columnNameOfCorruptRecord = '的')