如何在PySpark中读取特殊格式JSON文件并转存为Parquet?
解决PySpark读取单行JSON对象文件的问题
你遇到的这种格式是JSON Lines(每行一个独立JSON对象),不需要启用multiline参数——这个参数是用来读取整个文件为单个JSON对象(比如包含数组的多行嵌套JSON)的,反而会让Spark只识别第一行的完整JSON结构,忽略后续行数据。
正确读取代码
直接移除multiline选项即可,Spark默认支持按行读取这种格式:
df = spark.read.json("data.json") df.write.parquet("data.parquet")
可选的显式指定方式
如果需要更明确地声明读取规则,可以添加lineSep参数指定换行符作为分隔(默认已采用此规则),或显式指定格式:
df = spark.read.format("json").option("lineSep", "\n").load("data.json") df.write.parquet("data.parquet")
验证读取结果
执行以下代码确认数据是否全部加载:
df.show()
正常输出应包含所有三行数据:
+---+-----+ | id| name| +---+-----+ | 1| jhon| | 2|bryan| | 3| jane| +---+-----+
内容的提问来源于stack exchange,提问作者Douglas Oliveira
相关产品推荐
相关产品推荐

