分享

hive动态分区数据导入!!!

zzzzyyyyy 发表于 2014-1-8 17:07:01 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 11 54109
如何将远程oracle的数据导入到hive中有动态分区的表!!!??????

已有(11)人评论

跳转到指定楼层
pig2 发表于 2014-1-9 18:07:13
zzzzyyyyy 发表于 2014-1-9 16:52
我的意思不支持向hive的动态分区导入,只支持静态分区导入!!

这个可以换一种方式。
不知道你导入方式是直接新建表还是采用已经有的表。
你可以先在hive新建表,这个是一个动态分区表。表可以是空的,或则很少的数据。然后采用sqoop的数据增量导入。
回复

使用道具 举报

sstutu 发表于 2014-1-8 17:21:51
本帖最后由 sstutu 于 2014-1-8 17:24 编辑

首先你需要明白两点:

第一点:静态分区和动态分区

分区是在处理大型事实表时常用的方法。分区的好处在于缩小查询扫描范围,从而提高速度。分区分为两种:静态分区static partition和动态分区dynamic partition。静态分区和动态分区的区别在于导入数据时,是手动输入分区名称,还是通过数据来判断数据分区。对于大数据批量导入来说,显然采用动态分区更为简单方便。

在你仅使用动态分区字段做分区索引时。

然后用hive的insert命令进行插入操作。注意,除了所有列外,需要将分区的动态字段跟在后面。

INSERT OVERWRITE TABLE target PARTITION (dt)
SELECT id,user_id,app_id,time,ip,substr(time,0,10) FROM origin

可以看到,动态分区的字段支持函数操作

上面讲了是如何插入动态分区 。剩下的另外一点就是你该如何远程连接Oracle

第二点:可以看看下面的帖子。

使用Sqoop从Oracle导入数据到Hive的方法



回复

使用道具 举报

zzzzyyyyy 发表于 2014-1-8 17:30:40
sstutu 发表于 2014-1-8 17:21
首先你需要明白两点:第一点:静态分区和动态分区分区是在处理大型事实表时常用的方法。分区的好处在于缩小 ...

我们可以使用本地库的数据导入动态hive分区,这个是没问题的。但是远程直接导入动态分区,暂时没搞定!!谢谢
回复

使用道具 举报

sstutu 发表于 2014-1-8 17:53:23
你们使用的sqoop吗?是远程配置问题,还是已经可以远程,但是导数据的过程中发生错误
回复

使用道具 举报

zzzzyyyyy 发表于 2014-1-8 18:04:11
sstutu 发表于 2014-1-8 17:53
你们使用的sqoop吗?是远程配置问题,还是已经可以远程,但是导数据的过程中发生错误

正在测试sqoop各种参数导入!!!
回复

使用道具 举报

zzzzyyyyy 发表于 2014-1-9 16:32:00
sstutu 发表于 2014-1-8 17:53
你们使用的sqoop吗?是远程配置问题,还是已经可以远程,但是导数据的过程中发生错误

sqoop不支持这种参数的动态导入。。。。。
回复

使用道具 举报

pig2 发表于 2014-1-9 16:50:40
zzzzyyyyy 发表于 2014-1-9 16:32
sqoop不支持这种参数的动态导入。。。。。

sqoop只是一个导数据的工具,提取数据然后插入。动态分区属于hive功能。
回复

使用道具 举报

zzzzyyyyy 发表于 2014-1-9 16:52:22
pig2 发表于 2014-1-9 16:50
sqoop只是一个导数据的工具,提取数据然后插入。动态分区属于hive功能。

我的意思不支持向hive的动态分区导入,只支持静态分区导入!!
回复

使用道具 举报

zzzzyyyyy 发表于 2014-1-13 09:34:14
pig2 发表于 2014-1-9 18:07
这个可以换一种方式。
不知道你导入方式是直接新建表还是采用已经有的表。
你可以先在hive新建表,这个 ...

我是在hive已经建有分区表,然后使用sqoop从远程oracle库导入到hive,结果失败了!!应该是hive不支持向动态分区导入数据!!!
回复

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条