Spark Scala读取JSON文件出现_corrupt_record列的解决方法
Spark Scala读取JSON出现_corrupt_record的解决方法
问题根源
你的JSON文件是JSON Lines格式(每行一个独立的JSON对象),但你启用了multiline=true——这个参数是用来读取单个跨多行的大JSON对象/数组的,启用后Spark会把整个文件当成一个完整JSON结构解析,导致每行的片段被识别为损坏记录,从而生成_corrupt_record列。
解决方案
移除multiline配置(默认值即为false),让Spark按JSON Lines格式读取每行的独立JSON对象:
val df = spark.read .format("json") .load("PATH")
额外排查点
如果仍存在解析问题,可以检查以下内容:
- 确认每个JSON对象完整占据一行,内部无换行(若JSON对象必须跨多行,需将整个文件整理为单个大JSON数组,所有对象包裹在
[]内,再启用multiline=true) - 通过设置
mode="DROPMALFORMED"跳过格式损坏的记录:val df = spark.read .format("json") .option("mode", "DROPMALFORMED") .load("PATH")
内容的提问来源于stack exchange,提问作者Prabhakar Yadav
相关产品推荐
相关产品推荐

