我面临着一个奇怪的问题。我在文件和表定义以及逗号中都尝试使用制表符分隔符。
但是在这两种情况下它都会将十进制值读取为NULL。但是当我将这些字段定义为INT时,它可以正常工作。
以逗号分隔值的示例数据: 1,22.334 2,445.322 3,999.233
将此表定义为
创建表x(ID INT,SAL DECIMAL(3,3))行格式分隔的字段以'\ t'位置'\ tmp \ data \'
终止类似于逗号分隔文件
创建表x(ID INT,SAL DECIMAL(3,3))行格式分隔的字段以','location'\ tmp \ data \'
终止但在这两种情况下,它都将十进制值读为NULL?问题是什么
答案 0 :(得分:0)
首先,Decimal数据类型不接受数据中的逗号。 第二个问题是您必须将提供的样本数据的小数(3,3)增加到最小十进制(7,3)。 由于小数(3,3)不能容纳3个值中的任何一个。
由于您的原始数据包含数据中的逗号, 您必须将所有列作为字符串数据类型加载到表中。 稍后使用正则表达式删除数据中的逗号并加载到带有十进制数据类型的二级hive表中。