Hive 或 UNIX 输出以指数 E 为单位



>我有一个蜂巢查询,它以指数形式生成(3.52504582E+8)列的总和。在SQL中,我从RDBMS表中获取数值。我正在写入文件的两个输出,并比较UNIX中两个文件的差异以进行验证检查。

有没有办法在 hive 或 UNIX 级别将3.52504582E+8转换为352504582以便验证成功?

配置单元表总和:3.52504582E+8

RDBMS 表总和:352504582

diff <file1> <file2> 验证失败。

有没有352504582办法在 hive 或 在 UNIX 级别,以便验证成功?

$ printf "%.fn" 3.52504582E+8
352504582
$ awk '{print $1+0}' <<< "3.52504582E+8"
352504582
$ awk '{printf("%.fn",$1)}' <<< "3.52504582E+8"
352504582

我需要修改 Hive 输出文件中的结果。将 以上仅打印或进行永久更改?该文件将有 2 个 字段和~分开。262~3.52504582E+8

# if this is your input file
$ cat infile
262~3.52504582E+8
# result after
$ awk 'BEGIN{FS=OFS="~"}{$2+=0}1' infile
262~352504582

解释:

    FS - 输入字段分隔符,
  • OFS - 输出字段分隔符,我们将FSOFS都设置为~

  • $2+=0 awk 在此处自动转换

  • 最后1执行默认操作,即打印当前/记录/行print $0。要了解awk的工作原理,请尝试awk '1' infile,它将打印所有记录/行,而awk '0' infile什么都不打印。除零以外的任何数字均为 true,这将触发默认行为。

最新更新