分享

关于hive的一个分区添加数据问题

jsh0401 发表于 2015-1-4 00:05:28 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 3 14351
已有的外部表,新建表分区,可以指定位置
alter table a add partition(day=20140101) location '20140101'
这样会形成/xx/xx/20140101/这样的目录,就需要这样格式的目录。

但是insert插入数据时候
insert overwrite table a partition (day=20140101)
select xx from xx....;

会发生这样的现象:原来20140101的文件夹被删除了,新建了day=20140101的文件夹,然后数据都到day=20140101的文件夹了
我们要的效果是让数据到20140101的文件夹下


后来排除原因是hive-site.xml里设置了,设置了hdfs什么cache的什么属性为true,
默认的为false,但是设置false,jdbc链接hive就会内存溢出啥的,具体什么属性,等我查到了再补充进来,而那个属性必须设置为true

大神们,怎么破


已有(3)人评论

跳转到指定楼层
muyannian 发表于 2015-1-4 08:12:51
INSERT OVERWRITE   INTO本身的含义是清空原先内容,然后填入新的内容

是否尝试INSERT INTO

参考下面:
INSERT OVERWRITE TABLE tablename PARTITION (partcol1[=val1], partcol2[=val2] ...) select_statement FROM from_statement;
INSERT INTO TABLE tablename PARTITION (partcol1[=val1], partcol2[=val2] ...) select_statement FROM from_statement;
更多内容参考
LanguageManual DML

回复

使用道具 举报

jsh0401 发表于 2015-1-4 09:17:15
muyannian 发表于 2015-1-4 08:12
INSERT OVERWRITE   INTO本身的含义是清空原先内容,然后填入新的内容

是否尝试INSERT INTO

不是这个问题,into会原来的20140101目录不删除,还是会新增day=20140101目录,然后数据进day=20140101目录下面,那个属性是fs.hdfs.impl.disable.cache这个,默认是false,设置为了true
回复

使用道具 举报

tntzbzc 发表于 2015-1-4 10:29:54
贴出具体问题(内存异常)来,大家一块看看
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条