Apache spark 从Apache Spark加载时,小数以科学格式存储在配置单元表中

Apache spark 从Apache Spark加载时,小数以科学格式存储在配置单元表中,apache-spark,hive,apache-spark-sql,parquet,spark-shell,Apache Spark,Hive,Apache Spark Sql,Parquet,Spark Shell,我面临一个配置单元表的问题,其中十进制数(如0.00000000000)存储为0E-11。即使它们代表相同的值0,我也不明白为什么它会以科学格式存储。这是用于数值计算的百分比字段之一,因此十进制数字的比例应较高。即使它是科学的形式,它不会以任何方式影响我们的计算。我们可以进行数字运算,但科学格式的表示可能会给使用此表的人带来一些混乱。此问题仅在百分比为0时发生。在其他存在有效百分比(如0.123456789)的情况下,该值按原样存储,不带任何ε 你能解释一下为什么0.00000000000是用科

我面临一个配置单元表的问题,其中十进制数(如0.00000000000)存储为0E-11。即使它们代表相同的值0,我也不明白为什么它会以科学格式存储。这是用于数值计算的百分比字段之一,因此十进制数字的比例应较高。即使它是科学的形式,它不会以任何方式影响我们的计算。我们可以进行数字运算,但科学格式的表示可能会给使用此表的人带来一些混乱。此问题仅在百分比为0时发生。在其他存在有效百分比(如0.123456789)的情况下,该值按原样存储,不带任何ε

你能解释一下为什么0.00000000000是用科学格式表示的吗?。另外,我想知道,如果没有像0.00000000000这样的ε,如何存储十进制数。出于我们的目的,我们只希望解决方案采用配置单元查询语言(HQL),因为我们有一个接受HQL文件并将HQL文件的结果写入配置单元表的框架

为了演示这个问题,我遵循了以下步骤

  • 我创建了一个带有十进制和字符串列的临时表
  • 它使用拼花地板作为文件格式
  • 插入0.00000000000作为字符串和十进制(12,11)
  • 显示列和列均以科学格式显示
  • 尝试使用拼花工具检查文件内容,但即使在拼花文件中,它也存储在 科学格式
  • 也尝试使用纯文本格式,但行为相同
  • 我正在使用Spark 2.3进行跑步。我查看了各种StackOverflow线程,例如,和,但它们使用Spark Dataframe API来保留自然数格式,但我希望解决方案是HQL


    如果有任何问题,请告诉我。

    我想格式编号功能应该可以帮您解决

    请看下面的帖子

    感谢用户

    我检查过了,它正在工作

    选择格式\u编号(0.00000000000,11)


    注意:没有足够的声誉发表评论,因此请将其作为答案添加到此处。

    谢谢@linusRian的回答。你的答案当然有帮助,但我也在寻找任何其他答案,解释为什么0.0000首先以科学格式表示。关于format_string还有一点需要注意,它默认添加了1000个分隔符,返回类型为string。因此,对于那些希望避免使用科学格式但写入的最终数据类型是decimal的人,他们可能不会从该函数中受益,因为将number_格式的结果强制转换为null形式的decimal结果。@VenkatesanMuniappan对,请理解:)。如果我得到您问题的答案,我将更新。提前感谢:)。