类型使用TDCH从Teradata导入到Hive(实木复合地板)的十进制值时出现的Casting错误
问题描述:
我正尝试使用TDCH将Teradata中的十进制数据导入到Hive Parquet格式,但它给出了类型转换错误。不知道为什么它试图将十进制转换为字符串。我在两端都使用了十进制数据类型,即Hive和Teradata。 Timestamp字段也是如此。这是在Hive中使用Parquet格式时发生的,类似的事情对于RCfile格式正常工作。请帮忙吗?类型使用TDCH从Teradata导入到Hive(实木复合地板)的十进制值时出现的Casting错误
答
根据Parquet Documentation,在Parquet中没有Decimal或Timestamp数据类型,这必须是为什么映射到String。
文件格式支持的类型应尽可能小,重点在于类型如何影响磁盘存储。例如,16位整数在存储格式中没有明确的支持,因为它们被32位整数覆盖并且编码效率很高。这降低了实现该格式的读者和作者的复杂性。类型为: - BOOLEAN:1位布尔型 - INT32:32位有符号整型 - INT64:64位有符号整型 - INT96:96位有符号整型 - FLOAT:IEEE 32位浮点型值 - DOUBLE:IEEE 64位浮点值 - BYTE_ARRAY:任意长的字节数组。
Hive列定义中的数据类型和HDFS中的数据类型表示形式不是同一回事。如果您需要这些数据的确切数据类型,则应尝试另一种格式。