我正在创建一个类似的外部表:
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'
但是当我运行insert overwrite table select时,它不会创建一个名为“site_datatype.result”的文件,而是创建一个名为“000000_0”的目录“site_datatype.result”(正确的内容)虽然)。
这应该是这样的吗?如果是的话,我怎样才能解决这个问题(在蜂巢内部)以我需要的方式完成它?
谢谢, 马里奥
答案 0 :(得分:3)
Hive在目录级别运行,因此多个reducer可以快速将结果转储到HDFS中。如果要在文件级别运行,则必须将其发送到单个reducer以合并为单个文件,从而增加了不必要的瓶颈。
如果绝对需要单个文件中Hive表的数据,可以将reducers的数量设置为1,然后查询数据并将其推送到新的表或目录(通过Insert Overwrite)。
另一种选择是从HDFS(hadoop fs -get hive / warehouse / sampletable /。)获取表格,然后将所有文件'cat'重新组合在一起。