我正在使用AWS Glue 4,它运行在Spark 3.3.0上。我受到以下问题的阻碍:https://issues.apache.org/jira/browse/SPARK-25177
其最佳总结如下:
如果小数类型值的小数位数〉6,则将以科学记数法显示/输出零(0)值,因此,当〉将 Dataframe 输出保存到外部数据库时,由于“0”值上的科学记数法而失败。
可重现性如下:
spark.sql("create table test (a decimal(10,7), b decimal(10,6), c decimal(10,8))")
spark.sql("insert into test values(0, 0,0)")
spark.sql("insert into test values(1, 1, 1)")
spark.table("test").show()
+---------+--------+----------+
| a| b| c|
+---------+--------+----------+
| 0E-7|0.000000| 0E-8| //If scale > 6, zero is displayed in scientific notation
|1.0000000|1.000000|1.00000000|
+---------+--------+----------+
我已经在AWS Glue 4(运行Spark 3.3.0)上测试过这个问题,但它在那里没有得到修复。
有人知道这个Spark pull请求https://github.com/apache/spark/pull/22171是否真的进入了Spark版本吗?从pull请求中我可以看到这个补丁进入了master版本,但是我不确定这是否意味着它已经发布了。
先谢谢你的帮助。
PS:此处建议了一个可行的变通方案:https://community.databricks.com/s/question/0D53f00001lLNxuCAG/dataframe-cast-string-to-decimal-when-encountering-zeros-returns-oe16
1条答案
按热度按时间hgb9j2n61#
@Lamanus证实,该问题只是关闭,并没有解决。