我有一个要通过spark加载的csv文件。我想区分好记录和坏记录,也想知道坏记录的每一行级错误。
我正在指定一个模式,并且可以像这样捕获损坏的记录,但是如何获取每个不同的损坏记录的错误消息?
--------------+-----------+----------+--------------------+-------+--------------------+
|service_point_number|energy_type|is_enabled| metadata|testint| _corrupt_record|
+--------------------+-----------+----------+--------------------+-------+--------------------+
| 90453512| E| false|Address1@420#Addr...| 23| null|
| 14802348| G| false|Address1@420#Addr...| 24| null|
| null| null| null| null| null|99944990,E,12,Add...|
| 78377144| E| false| 123| 26| null|
| 25506816| G| false|Address1@420#Addr...| 27| null|
| 48789905| E| true|Address1@420#Addr...| null|48789905,E,true,A...|
| 20283032| E| false|Address1@420#Addr...| 29| null|
| 67311231| G| false|Address1@420#Addr...| 30| null|
| 18240558| G| false|Address1@420#Addr...| 31|18240558,G,false,...|
| 42631153| E| false|Address1@420#Addr...| 32| null|
+--------------------+-----------+----------+--------------------+-------+--------------------+
答案 0 :(得分:0)
2.x版本中集成在spark中的spark-csv软件包 https://docs.databricks.com/spark/latest/spark-sql/handling-bad-records.html
badRecordsPath
在Possible to put records that aren't same length as header records to bad_record directory上查看CSV示例
答案 1 :(得分:0)
badRecordsPath 可以工作,但可能你在指定路径中找不到它的原因是实际执行直到触发动作才会开始。尝试在代码 df.show()
后使用 spark.read...
,然后再次查看输出文件是否现在显示在路径中。