嗨,我是hive的新手,肯定会欣赏一些提示。
我正在尝试在cli中将hive查询结果导出为csv。
我可以使用以下方式将它们导出为文本:
hive -e'set hive.cli.print.header = true; SELECT * FROM TABLE_NAME LIMIT 0;' > /file_path/file_name.txt
任何人都可以建议我需要添加的内容,以便使用','
分隔列答案 0 :(得分:2)
这是你可以直接从蜂巢中进行的,而不是通过sed路线。
SET hive.exec.compress.output=FALSE;
SET hive.cli.print.header=TRUE;
INSERT overwrite local directory '/file_path/file_name.txt' row format delimited fields terminated by ',' SELECT * FROM TABLE_NAME LIMIT 1;
答案 1 :(得分:0)
您可以像这样在查询中使用concat_ws()
函数
对于SELECT *
select concat_ws(',',*) from <table-name>;
或者如果您想要特定的列
select concat_ws(',', col_1, col_2, col_3...) from <table-name>;
答案 2 :(得分:-1)
hive -e 'set hive.cli.print.header=true; SELECT * FROM TABLE_NAME LIMIT 0;' > /file_path/file_name.txt && cat /file_path/file_name.txt | sed -e 's/\s/,/g' > /file_path/file_name.formatted.txt
一旦你的查询创建输出文件,然后使用sed用“,”替换空格,如上所示。