hive加载数据:如何指定文件列分隔符和动态分区列?

时间:2014-03-03 02:04:05

标签: hadoop hive

我有一些关于将mysql数据加载到hive2中的问题,并且不知道如何指定分隔符,我尝试了serval时间但什么都没有。

以下是配置单元表,id是分区列,

0: jdbc:hive2://localhost/> desc test;  
+-----------+------------+----------+  
| col_name  | data_type  | comment  |  
+-----------+------------+----------+  
| a         | string     |          |  
| id        | int        |          |  
+-----------+------------+----------+

当我执行

load data local inpath 'file:///root/test' into table test partition (id=1);

它说:

Invalid path ''file:///root/test'': No files matching path file

但确实存在。

我希望通过指定的文件进行动态分区,所以我将这个列添加到文件中,如下所示:

root@<namenode|~>:#cat /root/test  
a,1  
b,2

但它也失败了,文档对此没有任何说明,我猜它现在不支持。 剂量任何人都有一些想法吗?任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

如果要指定列分类器,则使用命令;

ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','

用分隔符

替换','

此外,如果要对Hive表进行分区,请指定要使用的终止列;

CREATE TABLE Foo (bar int )
PARTITIONED BY (testpartition string)  
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','