我从hive表myTable中执行以下操作.
INSERT OVERWRITE LOCAL DIRECTORY'/ myDir/out'SELECT concat_ws('',NAME,PRODUCT,PRC,field1,field2,field3,field4,field5)FROM myTable;
因此,此命令在文件夹out /中生成2个文件000000_0和000001_0.
但是,我需要将内容作为单个文件.我该怎么办?
目录中有多个文件,因为每个reducer都在写一个文件.如果您确实需要将内容作为单个文件,请仅使用1个reducer运行map reduce作业,该reducer将写入单个文件.
但是,根据您的数据大小,这可能不是运行单个reducer的好方法.
编辑:不是强制配置单元运行1减少任务并输出单个减少文件,最好使用hadoop fs操作将输出合并到单个文件.例如
hadoop fs -text /myDir/out/* | hadoop fs -put - /myDir/out.txt
Run Code Online (Sandbox Code Playgroud)
游戏晚了一点,但我发现使用LIMIT large_number,其中large_number大于查询中的行。它迫使蜂巢至少使用减速器。例如:
set mapred.reduce.tasks=1; INSERT OVERWRITE LOCAL DIRECTORY '/myDir/out' SELECT * FROM table_name LIMIT 1000000000
完美地工作。
| 归档时间: |
|
| 查看次数: |
11661 次 |
| 最近记录: |