-bash-4.1$ hadoop fs -ls /mytest/warehouse/mytable/
Found 4 items
-------------
- -rwxrwxrwx 3 myvm users 1163 2016-11-24 03:11 /mytest/warehouse/mytable/000000_0
- -rwxrwxrwx 3 myvm users 0 2016-11-24 03:09 /mytest/warehouse/mytable/000000_1
- -rwxrwxrwx 3 myvm users 0 2016-11-24 03:09 /mytest/warehouse/mytable/000000_2
- -rwxrwxrwx 3 myvm users 0 2016-11-24 03:09 /mytest/warehouse/mytable/000000_3
问题
insert overwrite directory "/mytest/warehouse/mytable" select * from my_table
上面的命令只会覆盖其生成的文件,即: /mytest/warehouse/mytable/000000_0
我希望它可以删除路径下的所有文件,并使用所需的输出创建1个文件。
在选择hive-1.1.0-cdh5.5.1
之前,它似乎工作正常。
它正在生成4个零件文件,因为您的还原数为4。在输出中仅生成一个部分文件
您可以在Hive终端设置Hive属性
set mapred.reduce.tasks=1
也
还原数的数量也取决于输入文件的大小
默认情况下是1GB(1000000000字节)。您可以通过设置属性hive.exec.reducers.bytes.per.reducer来更改它:
通过更改hive-site.xml
<property>
<name>hive.exec.reducers.bytes.per.reducer</name>
<value>1000000</value>
</property>
或使用set
$ hive -e"设置hive.exec.reducers.bytes.per.ducer = 1000000"