Hive表导出优化

时间:2013-09-20 15:57:20

标签: hadoop hive

我正在寻求优化或减少以下工作流程中的步骤数。

我有一个名为Logs的Hive表。 我应用一些自定义udfs来获取转换日志。

我创建了转换后的日志,其表格类似于

CREATE TABLE transform_logs
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
AS
SELECT nonsafehash(visitorid), nonsafehash(url), action  FROM logs

然后我做

./bin/hadoop dfs -cat  /user/hive/warehouse/transform_logs/\* > transform_logs.csv

仅限于那时

./bin/hadoop dfs -put  transform_logs.csv /some/other/path

我的最后两步是否只相当于'mv'?

我的最终目标是在/ some / other / path下有一个csv。

似乎我不应该写文件系统来实现这一点。

1 个答案:

答案 0 :(得分:2)

如果你想将文件连接成一个文件,我认为绕过本地FS的唯一方法就是通过发出以下命令来使用单个reducer:

set mapred.reduce.tasks=1
在发出CREATE TABLE查询之前

然后你可以做hadoop fs -mv。当然,由于单个reducer,您的查询速度会变慢,但如果您需要将数据连接到单个文件,那么它似乎是必要的权衡。