Spark行级错误处理,如何在行级获取错误消息

时间:2019-02-05 18:03:00

标签: java apache-spark

我有一个要通过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|
+--------------------+-----------+----------+--------------------+-------+--------------------+

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

badRecordsPath 可以工作,但可能你在指定路径中找不到它的原因是实际执行直到触发动作才会开始。尝试在代码 df.show() 后使用 spark.read...,然后再次查看输出文件是否现在显示在路径中。