列值采用 0 或 nul 代替 HIVE 中的 char 数据类型

Posted

技术标签:

【中文标题】列值采用 0 或 nul 代替 HIVE 中的 char 数据类型【英文标题】:Column values are taking as 0 or nul in place of char data type in HIVE 【发布时间】:2020-05-18 05:29:43 【问题描述】:

我有一个表,其中一列具有 char(3) 数据类型。表创建语句工作正常。但是,当尝试使用 char(3) 数据插入该表时。代码运行良好。

但是,当我选择 * 表时,我在相应的列中看到 0,有时是 NUL,而不是我插入的值。

有什么可能的原因吗?

【问题讨论】:

【参考方案1】:

Hive 不执行任何类型的数据类型验证。所以当你插入的数据有错误的模式信息时,它会在没有任何问题的情况下被插入,但是同样的数据不能被读取,Null 会来代替。

请检查架构信息并根据架构信息准备输入数据。

【讨论】:

是的!但就我而言,在读取数据时,我看到 0 或有时为 NUL....这是我无法连接的东西。 你能分享示例原始数据及其架构信息吗 这是我无法分享的东西。原始数据是 CSV 文件,它在外部表中提供。表加载正常。然后,我使用这个表填充一个临时表,其中包含一个列,该列将“USD”作为所有行的货币,并像往常一样使用插入命令。外部表为默认存储,暂存表为ORC类型。 感谢dreamcoder 抽出宝贵时间....已排序。这是由于取值错误。错误的数据进入了正确的架构。

以上是关于列值采用 0 或 nul 代替 HIVE 中的 char 数据类型的主要内容,如果未能解决你的问题,请参考以下文章

SQL / Hive 选择具有特定列值的第一行

根据 Presto/Hive 中的列值聚合列

Hive中的分桶

Hive bucket桶

优化 HIVE 查询中的连接:c

C++的nullptr与NUL