spark无法合并Parquet文件(整数->十进制)

1szpjjfi  于 2021-05-18  发布在  Spark
关注(0)|答案(1)|浏览(340)

我有两份Parquet文件。
第一个包含以下列:decimal:decimal(38,18)(nullable=true)
第二个列具有相同的列,但类型不同:decimal:integer(nullable=true)
我想合并它们,但我不能简单地将它们分开阅读,并在特定列中抛出一个cast,因为这是接收许多不同Parquet模式的应用程序的一部分。我需要能涵盖所有场景的东西。
我是这样读的:

df = spark.read.format("parquet").load(['path_to_file_one', 'path_to_file_2'])

当我试图显示数据时,它失败了,错误如下
无法转换Parquet地板列。列:[decimal],应为:decimaltype(38,18),找到:int32
我正在将azure databricks与以下配置一起使用:
数据库:7.1
Spark3.0.0
我在这里上传了Parquet文件:https://easyupload.io/m/su37e8
我是否可以强制spark将空列自动广播到其他Dataframe中同一列的类型中?
应该很简单,所有列都可以为空。。。

1dkrff03

1dkrff031#

如果您提供的外部架构的列数据类型定义为十进制,并且该列包含十进制(38,18),则会出现这种情况。

我们发现这是Spark的局限性。数据类型为decimal(38,18)的列。
尝试 df.show() 以显示结果。

相关问题