Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
json的Spark异常处理_Json_Scala_Exception Handling_Apache Spark - Fatal编程技术网

json的Spark异常处理

json的Spark异常处理,json,scala,exception-handling,apache-spark,Json,Scala,Exception Handling,Apache Spark,我试图在读取json文件时捕获/忽略解析错误 val DF = sqlContext.jsonFile("file") 有几行不是有效的json对象,但数据太大,无法单独通过(~1TB) 我遇到过使用import scala.util.Try和in.map(a=>Try(a.toInt))引用的映射异常处理: 在使用函数sqlContext.jsonFile读取json文件时,如何捕获异常 谢谢 不幸的是,你在这里运气不好DataFrameReader.json在引擎盖下使用,几乎是全部或全

我试图在读取json文件时捕获/忽略解析错误

val DF = sqlContext.jsonFile("file")
有几行不是有效的json对象,但数据太大,无法单独通过(~1TB)

我遇到过使用
import scala.util.Try
in.map(a=>Try(a.toInt))
引用的映射异常处理:

在使用函数
sqlContext.jsonFile
读取json文件时,如何捕获异常


谢谢

不幸的是,你在这里运气不好<代码>DataFrameReader.json在引擎盖下使用,几乎是全部或全部。如果输入包含格式错误的行,则必须手动筛选这些行。基本解决方案可能如下所示:

import scala.util.parsing.json._

val df = sqlContext.read.json(
    sc.textFile("file").filter(JSON.parseFull(_).isDefined)
)

由于上面的验证非常昂贵,您可能更愿意完全删除
jsonFile
/
read.json
,直接使用解析后的json行。

我是否可以建议定义
而不是
匹配{…}
。谢谢,谢谢@zero323!这要慢得多,但它可以工作,让作业在夜间运行也没有什么错:)您可以尝试不同的解析库。我认为Spark在内部使用。使用
mapPartitions
而不是
map
也可以提高性能。在读取json时,您可以应用
.option(“mode”,“DROPMALFORMED”)
忽略错误记录,或者应用
.option(“mode”,“FAILFAST”)
以中断作业并出现有用的异常。