Hive查询o / p到HDFS为CSV文件

时间:2015-01-08 11:34:59

标签: csv hadoop hive

我想以CSV格式(逗号分隔)将hive查询输出写入HDFS文件。

对于LOCAL DIRECTORY:

INSERT OVERWRITE LOCAL DIRECTORY '/home/test/result/' 
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' SELECT * from table;

以上工作正常,并将查询输出作为CSV格式写入本地目录。

对于HDFS:

INSERT OVERWRITE DIRECTORY '/home/test/result/' SELECT * from table;

写入HDFS的输出被序列化为文本,其中列由^ A分隔,行由换行符分隔。

注意

ROW FORMAT DELIMITED FIELDS  ---- Not supported for above query

有没有办法将HDFS目录中的配置单元查询输出写为CSV文件(以逗号分隔)

3 个答案:

答案 0 :(得分:0)

只有一种方式.. 1.按预期创建一个表格结果 例如:创建外部表结果(col1类型,col2类型,......)行格式分隔的字段,由','存储为文本文件位置' / tmp / result&#39 ;; 2.将数据导入此表 例如:从tablename插入覆盖表结果select *; 3.丢弃外部表 例如:drop table result;

在删除外部表时,只删除架构数据将保留在指定目录的文本文件中,该目录将采用逗号分隔格式。

答案 1 :(得分:0)

试试这个:

INSERT OVERWRITE DIRECTORY' / home / test / result /'从表中选择concat(col1,',',col2,',',... colN);

答案 2 :(得分:0)

要以自定义格式向hdfs写入数据,请使用printf

insert overwrite directory "youroutputdir"  select printf("%s,%s,%d", col1, col2, col3) from mytable;