从 pyspark 中的多行文件中读取 JSON 文件
Posted
技术标签:
【中文标题】从 pyspark 中的多行文件中读取 JSON 文件【英文标题】:Read JSON files from multiple line file in pyspark 【发布时间】:2020-10-06 09:04:07 【问题描述】:我正在学习 python 中的 spark。我有一个 JSON 文件如下:
"_class":"fdsfsdfsdfds",
"n":"test ccorona",
"fn":"ccorona",
"ln":"ccorona",
"un":"ccorona",
"p":"line",
"g":"ccorona",
"l":"ccorona",
"e":"ccorona",
,
只有这段代码:
df = spark.read.json("1.json")
df.show()
当我运行节目时,我得到了这个消息
pyspark.sql.utils.AnalysisException: Since Spark 2.3, the queries from raw JSON/CSV files are disallowed when the
referenced columns only include the internal corrupt record column
(named _corrupt_record by default). For example:
spark.read.schema(schema).json(file).filter($"_corrupt_record".isNotNull).count()
and spark.read.schema(schema).json(file).select("_corrupt_record").show().
Instead, you can cache or save the parsed results and then send the same query.
For example, val df = spark.read.schema(schema).json(file).cache() and then
df.filter($"_corrupt_record".isNotNull).count().;
还有
df.printSchema()
root
|-- _corrupt_record: string (nullable = true)
还有这个
df.select("fn")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/opt/spark/python/pyspark/sql/dataframe.py", line 1421, in select
jdf = self._jdf.select(self._jcols(*cols))
File "/opt/spark/python/lib/py4j-0.10.9-src.zip/py4j/java_gateway.py", line 1304, in __call__
File "/opt/spark/python/pyspark/sql/utils.py", line 134, in deco
raise_from(converted)
File "<string>", line 3, in raise_from
pyspark.sql.utils.AnalysisException: cannot resolve '`fn`' given input columns: [_corrupt_record];;
'Project ['fn]
+- Relation[_corrupt_record#168] json
如何从多行读取 Spark 中的 JSON sqlContext?
【问题讨论】:
【参考方案1】:这就是你阅读多行 JSON 的方式:
df = spark.read.option("multiLine", "true").option("mode", "PERMISSIVE").json("1.json")
【讨论】:
嘿,谢谢,但是 df = spark.read.option("multiLine", true).option("mode", "PERMISSIVE").json("1.json") Traceback (最近最后调用):文件“以上是关于从 pyspark 中的多行文件中读取 JSON 文件的主要内容,如果未能解决你的问题,请参考以下文章
Databricks 上的 PySpark 在绝对 URI 中获取相对路径:尝试使用 DateStamps 读取 Json 文件时
如何从数据帧列中的路径读取 AWS 上 pyspark 中的许多 Json 文件?
PySpark 从目录中读取多个 txt 文件为 json 格式