首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >何时使用Sqoop -创建-蜂窝表

问何时使用Sqoop -创建-蜂窝表
EN

Stack Overflow用户
提问于 2015-07-20 11:36:53
回答 2查看 21.8K关注 0票数 5

有人能分辨出create-hive-table和hive-import方法的区别吗?两者都会创建一个蜂巢表,但每个表的意义究竟是什么?

EN

回答 2

Stack Overflow用户

发布于 2015-07-22 23:48:49

hive-导入命令:

hive-import命令自动填充蜂窝转移中填充表的元数据。如果Hive中的表还不存在,Sqoop将根据为您的表或查询获取的元数据创建它。如果表已经存在,Sqoop将将数据导入到现有表中。如果要创建一个新的Hive表,Sqoop将把每个列的数据类型从源表转换为与Hive兼容的类型。

create-hive-table命令:

Sqoop可以在现有关系数据源的表基础上生成一个单元表(使用create-hive-table命令)。如果已设置,则如果存在目标单元表,则作业将失败。默认情况下,此属性为false。

使用create-hive-table命令涉及到三个步骤:将数据导入HDFS,创建Hive表,然后将HDFS数据加载到hive中。使用hive-import可以将这一步缩短为一步。

在hive-import期间,Sqoop将首先对临时位置执行正常的HDFS导入。导入成功后,Sqoop生成两个查询:一个用于创建表,另一个用于从临时位置加载数据。可以使用--target-dir或--warehouse-dir参数指定任何临时位置。

为上面的描述添加了一个示例

使用create-hive-table命令的:

涉及三个步骤:

  1. 将数据从RDBMS导入HDFS sqoop import --connect jdbc:mysql://localhost:3306/hadoopexample --table employees --split-by empid -m 1;
  2. 使用create-hive-table命令创建蜂箱表 sqoop create-hive-table --connect jdbc:mysql://localhost:3306/hadoopexample --table employees --fields-terminated-by ',';
  3. 将数据加载到蜂巢中 hive> load data inpath "employees" into table employees; Loading data to table default.employees Table default.employees stats: [numFiles=1, totalSize=70] OK Time taken: 2.269 seconds hive> select * from employees; OK 1001 emp1 101 1002 emp2 102 1003 emp3 101 1004 emp4 101 1005 emp5 103 Time taken: 0.334 seconds, Fetched: 5 row(s)

使用hive-import命令的:

sqoop import --connect jdbc:mysql://localhost:3306/hadoopexample --table departments --split-by deptid -m 1 --hive-import;

票数 9
EN

Stack Overflow用户

发布于 2015-07-24 17:34:04

不同之处在于,create表将基于数据库中的源表在Hive中创建表,但不会传输任何数据。命令"import --“将在Hive中创建表,并从源表导入数据。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31515498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档