从Databricks工作区读取JSON文件报错的原因及解决方法
报错原因与解决方法
报错原因
你的JSON文件是多行嵌套结构,Spark默认的JSON解析规则是按单行处理(要求每行对应一个独立JSON对象),导致整个文件被识别为不符合格式的损坏记录,查询结果仅包含默认的_corrupt_record列。而Spark 2.3及以后版本禁止这种仅返回损坏记录列的查询,因此触发报错。
解决方法
针对多行JSON文件,必须显式设置multiline=true参数让Spark正确解析,以下是两种可行方案:
方案1:SQL方式创建临时视图
通过CREATE VIEW语句指定解析参数,直接关联工作区文件路径:
CREATE OR REPLACE TEMP VIEW my_json_view USING json OPTIONS ( path 'file:/Workspace/Users/myusername@outlook.com/myJsonFile_in_Workspace.json', multiline 'true' ); -- 查询视图获取数据 SELECT * FROM my_json_view;
方案2:PySpark代码读取后转为视图
如果需要更灵活的预处理逻辑,用PySpark读取文件并设置参数,再注册为SQL可查询的视图:
# 读取多行JSON文件 df = spark.read.option("multiline", "true").json("file:/Workspace/Users/myusername@outlook.com/myJsonFile_in_Workspace.json") # 注册为临时视图 df.createOrReplaceTempView("my_json_view")
之后在SQL单元格中执行SELECT * FROM my_json_view;即可获取正确解析的数据。
备注:对于复杂或大体积的多行JSON文件,
multiline=true是必要配置,确保Spark能完整解析嵌套的JSON结构。
内容的提问来源于stack exchange,提问作者nam
相关产品推荐
相关产品推荐

