0

我正在尝试将 Hive 结果导出到位于 Amazon s3 上的文件。

但结果文件有一些无法识别的字符,如正方形等。

结果文件格式的类型是二进制/八位字节流而不是 csv。

我没有得到它无法创建 csv 文件的乳清。

使用的 hive 版本是 hive-0.8.1。

我把我遵循的步骤放在下面。

顺便说一下,hive 是从 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;

你能告诉我这可能是什么原因吗?

4

3 回答 3

1

您可以通过命令行从 Hive 导出数据:

hive -e 'select * from foo;' > foo.tsv

您可能可以通过 sed 或其他方法将制表符转换为逗号,我们只是使用 TSV 来处理所有内容。

于 2013-02-27T20:54:12.930 回答
0

您是否尝试将 HDFS 中的 Hive 仓库目录打开到您的输出以检查数据是如何存储在那里的?

我认为这条线不需要执行

INSERT OVERWRITE DIRECTORY 's3n://<path_to_s3_bucket>' SELECT * from test_csv;

相反,您可以直接执行“dfs -get”

于 2013-02-27T11:21:24.070 回答
0

For I know, INSERT OVERWRITE DIRECTORY will always use ctrl-A('\001') as delimiter. Direct copy of file with your table data would be the best solution. GL.

于 2013-02-27T13:41:15.850 回答