pyspark 在运行spark.read.json时,在其中一个json中发现重复列,即使没有重复列

kzipqqlq  于 5个月前  发布在  Spark
关注(0)|答案(2)|浏览(53)

我在PySpark和Synapse数据流中遇到了非常奇怪的错误。
我正在用下面的查询阅读JSON文件,但是得到了重复列错误**,即使没有重复列**。我可以使用其他工具和JSON验证器以及数据流来读取它,但不能在PySpark中读取。
PySpark查询如下:

df = (
    spark.read.option("multiline", "true")
    .options(encoding="UTF-8")
    .load(
        "abfss://<Container>]@<DIR>.dfs.core.windows.net/export28.json", format="json"
    )
)

字符串
这是我得到的stacktrace:
AnalysisException:在数据架构中找到重复列:amendationcommentkeyamendationreasonkeyamendationregulatoryproofkey追溯(最后一次调用):
文件“/opt/spark/python/lib/pyspark.zip/pyspark/sql/readwriter.py“,第204行,在load return self._df(self._jreader.load(path))中
文件“/home/trusted-service-user/cluster-env/env/lib/python3.8/site-packages/py4j/java_gateway.py”,第1304行,在callreturn_value = get_return_value(
File“/opt/spark/python/lib/pyspark.zip/pyspark/sql/utils.py“,line 117,in deco raise converted from None
pyspark.sql.utils.AnalysisException:在数据架构中找到重复列:amendationcommentkeyamendationreasonkeyamendationregulatoryproofkey

rqmkfv5c

rqmkfv5c1#

这表明,如果我们有任何重复的名称在顶级列以及在嵌套结构。
下面是Apache Spark website的声明:
在Spark 3.1中,Parquet、ORC、Avro和JSON查询器如果在顶级列和嵌套结构中检测到重复的名称,则会在read中抛出异常org.apache.spark.sql.AnalysisException: Found duplicate column(s) in the data schema。查询器在检测列名重复时会考虑SQL配置spark.sql.caseSensitive
尝试使用下面的命令,因为一切都取决于模式,因为这段代码成功地帮助了我。

Sch = spark.read.json(schemaPath)
schema = Sch.schema

df = spark.read.option("multiline","true").schema(schema).json(f"{json_path}")

字符串
也可以参考这些SO(SO1SO2SO3)。因为作者在不同的场景中给出了很好的解释。

c2e8gylq

c2e8gylq2#

--Please have this setting before loading--
spark.conf.set("spark.sql.caseSensitive", "true")

字符串

相关问题