Hive创建表文件名000000_0



我正在创建一个外部表,如下所示:

CREATE EXTERNAL TABLE site_datatype (
....
yada yada
....
ROW FORMAT DELIMITED FIELDS TERMINATED BY 't' LINES TERMINATED BY 'n'
LOCATION '/user/accounting/summary/2011-12-15/site_datatype.result'

而不是创建一个名为"site_datatype。当我运行insert overwrite表select时,它会创建一个目录site_datatype。结果"中包含一个名为"000000_0"的文件(尽管内容正确)。

应该这样工作吗?如果是的话,我该如何解决这个问题(在hive内部)来完成我需要的方式?

谢谢,马里奥

Hive在目录级操作,因此多个reducer可以快速将结果转储到HDFS。如果要在文件级别操作,则必须将其发送到单个reducer以合并为单个文件,从而增加了不必要的瓶颈。

如果你绝对需要Hive表中的数据放在一个文件中,你可以将reducer的数量设置为1,然后查询你的数据并将其推入一个新的表或目录(通过Insert Overwrite)。

另一个选择是从HDFS获取表(hadoop fs -get hive/warehouse/sampletable/.),然后将所有文件"cat"回一起。

最新更新