我正在将数据从csv文件导入到配置单元。我的表包含字符串和整数。然而,在我的输入文件中,it的两边有空格,所以它看起来像这样:
some string, 2 ,another string , 7 , yet another string
不幸的是,我无法控制提供文件的程序的格式。
当我使用(例如)导入数据时:
CREATE TABLE MYTABLE(string1 STRING, alpha INT, string2 STRING, beta INT, string3 STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
然后我所有的整数都被设置为NULL。我假设这是因为多余的空格导致解析失败。有什么办法可以解决这个问题吗?
发布于 2013-01-15 20:52:05
您可以执行多阶段导入。在第一阶段,将所有数据保存为STRING
,在第二阶段使用trim()
删除空格,然后将数据保存为INT
。您还可以考虑使用Pig将源文件中的数据作为原始文本读取,然后使用正确的数据类型将其写入Hive。
编辑
如果您可以将源文件作为外部表指向,也可以在一次遍历中完成此操作。
CREATE TABLE myTable(
string1 STRING, alpha STRING, string2 STRING, beta STRING, string3 STRING
) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LOCATION '\\server\path\file.csv'
INSERT INTO myOtherTable
SELECT string1,
CAST(TRIM(alpha) AS INT),
string2,
CAST(TRIM(beta) AS INT),
string3
FROM myTable;
https://stackoverflow.com/questions/14338495
复制