我将下面的结构数组作为字符串列存储在我的输入文件中。输入文件无法修改,因为它是从上游团队发送的。
[{"col1":"B078Z655KG","col2":2,"col3":351,"col4":"kindle_edition","col6":1,"transaction_info":[]},{"col1":"0736973540","col2":1,"col3":14,"col4":"paperback","col5":1,"col6":[]}]
我的代码:
val ds = df.select(col("faceout_features"))
val schema = StructType(Seq(StructField(“col1”, CatalystSqlParser.parseDataType("string")), StructField(“col2”, CatalystSqlParser.parseDataType("string"))))
val dfFromCSVJSON = df.select(col(“col1”), from_json(col("faceout_features"),schema).as("jsonData")) .select(“col1”,”jsonData.*")
在尝试解析为 json 时,我将输出列设为 null,而输入记录被处理为损坏的记录。感谢您在调试文件格式问题方面的任何帮助。
错误:
Found at least one malformed records (sample: "[{""col1"":""B078Z655KG"")
答案 0 :(得分:0)
错误消息显示无法解析的记录之一。调试这个的一般方法是查看该记录并尝试在外部解析它以获取火花。您可以将其粘贴到支持 JSON 的文本编辑器中,看看它是否突出显示了任何问题。发现问题后,请务必检查其他行是否存在相同问题。
对于问题中显示的特定错误消息,由于双引号,我们已经可以判断它不是有效的 JSON。换句话说,""B078Z655KG""
应该是 "B078Z655KG"
。