我想以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文件(以逗号分隔)
答案 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;