我正在尝试将Hive结果导出到位于Amazon s3上的文件。
但结果文件有一些无法识别的字符,如square等。
结果文件格式的类型是binary / octet-stream而不是csv。
我没有得到乳清,因为它无法创建csv文件。
使用的hive版本是hive-0.8.1。
我正在按照下面的步骤进行操作。
顺便说一下,从Amazon EMR启动的实例中使用配置单元。
create table test_csv(employee_id bigint, employee_name string, employee_designation string) row format delimited fields terminated by ',' lines terminated by '\n' stored as textfile;
insert overwrite table test_csv select employee_id , employee_name , employee_designation from employee_details;
INSERT OVERWRITE DIRECTORY 's3n://<path_to_s3_bucket>' SELECT * from test_csv;
你能告诉我这可能是什么原因吗?
答案 0 :(得分:1)
您可以通过命令行从Hive导出数据:
hive -e 'select * from foo;' > foo.tsv
你可能可以通过sed或其他东西将标签变换为逗号,我们只是将TSV用于所有内容。
答案 1 :(得分:0)
您是否尝试将HDFS中的Hive仓库目录打开到输出中以检查数据的存储方式?
我认为不需要执行此行
INSERT OVERWRITE DIRECTORY 's3n://<path_to_s3_bucket>' SELECT * from test_csv;
而是可以直接执行“dfs -get”
答案 2 :(得分:0)
我知道,INSERT OVERWRITE DIRECTORY
将始终使用ctrl-A('\ 001')作为分隔符。使用表数据直接复制文件将是最佳解决方案。 GL。