Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.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
如何处理scala中解析json的异常_Scala_Apache Spark - Fatal编程技术网

如何处理scala中解析json的异常

如何处理scala中解析json的异常,scala,apache-spark,Scala,Apache Spark,我试图从数据帧中的列中提取json块 val jsonSchema = StructType( Seq( StructField("json_blob", StructType( Seq( StructField("my_field", MapType(StringType, Str

我试图从数据帧中的列中提取json块

val jsonSchema =         StructType( 
            Seq( 
                StructField("json_blob", 
                   StructType(
                       Seq(
                           StructField("my_field", MapType(StringType, StringType, true))
                        )
                    )
                )
            )
        )

val mydf = 
    mydf_withjson
        .withColumn("json", from_json($"raw_json", jsonSchema))
        .select("*", "json.*")
这是个例外

org.apache.spark.sql.AnalysisException: Can't extract value from raw_json: need struct type but got string;

这是我在标题中的错误。我认为这意味着其中一些是json,一些是字符串,或者可能只是空的。当
json\u blob
是一个字符串时,有没有一种方法可以添加对这种情况的支持?

你能给我们一个演示文件,让我们可以测试一下吗? 我的第一个想法是检查“raw_json”列是否包含“{”和“}”,但如果不测试它,我不知道这是否有效

val mydf = 
mydf_withjson
    .withColumn("json", when($"raw_json".contains("{"), from_json($"raw_json", jsonSchema).otherwise($"raw_json"))
    .select("*", "json.*")

将错误放在问题文本中而不是标题中,然后给问题一个更好的标题。我得到这个错误:当包含(
raw_json
,“{”)时无法解析“CASE”,然后是JSONStructs(
raw_json
)ELSE
raw_json
END'由于数据类型不匹配:THEN和ELSE表达式应为相同类型或可强制为公共类型;;