我试图使用tdch将十进制数据从teradata导入到HiveParquet格式,但它给出了类型转换错误。不知道为什么要把十进制转换成字符串。我在两边都使用十进制数据类型,即hive和teradata。时间戳字段也会发生同样的情况。这种情况发生在hive中的表是Parquet格式的时候,类似的事情对于rcfile格式也很好。需要帮忙吗?
6fe3ivhb1#
根据parquet文档,parquet中没有decimal或timestamp数据类型,这就是Map到字符串的原因。文件格式所支持的类型应尽可能少,重点是这些类型对磁盘存储的影响。例如,存储格式中不明确支持16位整数,因为它们由具有高效编码的32位整数覆盖。这降低了为格式实现读写器的复杂性。类型为:-布尔:1位布尔-int32:32位有符号ints-int64:64位有符号ints-int96:96位有符号ints-浮点:ieee 32位浮点值-双精度:ieee 64位浮点值-字节数组:任意长字节数组。配置单元列定义中的数据类型和hdfs中的数据类型表示不同。如果您的数据需要这些精确的数据类型,您应该尝试另一种格式。
1条答案
按热度按时间6fe3ivhb1#
根据parquet文档,parquet中没有decimal或timestamp数据类型,这就是Map到字符串的原因。
文件格式所支持的类型应尽可能少,重点是这些类型对磁盘存储的影响。例如,存储格式中不明确支持16位整数,因为它们由具有高效编码的32位整数覆盖。这降低了为格式实现读写器的复杂性。类型为:-布尔:1位布尔-int32:32位有符号ints-int64:64位有符号ints-int96:96位有符号ints-浮点:ieee 32位浮点值-双精度:ieee 64位浮点值-字节数组:任意长字节数组。
配置单元列定义中的数据类型和hdfs中的数据类型表示不同。如果您的数据需要这些精确的数据类型,您应该尝试另一种格式。