gpt4 book ai didi

json - Pyspark delta Lake json 数据类型演变问题(合并不兼容异常)

转载 作者:行者123 更新时间:2023-12-04 15:00:06 24 4
gpt4 key购买 nike

我正在研究 pyspark (3.x) 和 delta 湖。我在数据类型方面面临一些挑战。
我们正在接收 JSON 数据类型的数据,我们正在对 JSON 数据集进行一些扁平化并将其保存为增量表,其中选项为“mergeSchema”,如下所示。我们没有在表上强加任何模式。

df.write\
.format("delta")\
.partitionBy("country","city")\
.option("mergeSchema","true")\
.mode("append")\
.save(delta_path)\
我们面临的问题是 - JSON 字段的数据类型经常发生变化,例如在增量表中,“field_1”的数据类型存储为 StringType,但新 JSON 的“field_1”的数据类型为 LongType。因此,我们遇到了合并不兼容的异常。
ERROR : Failed to merge fields 'field_1' and 'field_1'. Failed to merge incompatible data types StringType and LongType
如何处理增量表中的此类数据类型演变,我不想在字段级别处理数据类型更改,因为我们有 300 多个字段作为 json 的一部分。

最佳答案

我也采取了一种类似于nilesh1212的方法,即手动合并schema。
在我的情况下,我的脚本可以处理嵌套类型,可以在这里找到:
https://github.com/miguellobato84/spark-delta-schema-evolution
另外,我写了这篇关于这个问题的文章
https://medium.com/@miguellobato84/improving-delta-lake-schema-evolution-2cce8db2f0f5

关于json - Pyspark delta Lake json 数据类型演变问题(合并不兼容异常),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67111630/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com