何时使用Sqoop --create-hive-table

Pri*_*v v 3 hive sqoop

谁能说出create-hive-tablehive-import方法之间的区别?两者都会创建一个配置单元表,但是每个单元的意义是什么?

Sai*_*tam 5

hive-import命令:
hive-import命令自动为hive metastore中的填充表填充元数据。如果Hive中的表尚不存在,Sqoop将仅根据为您的表或查询获取的元数据创建表。如果该表已经存在,则Sqoop会将数据导入到现有表中。如果要创建新的Hive表,Sqoop会将源表中每一列的数据类型转换为与Hive兼容的类型。
create-hive-table命令:
Sqoop可以create-hive-table基于表从现有关系数据源生成一个配置单元表(使用命令)。如果设置,则如果目标配置单元表存在,则作业将失败。默认情况下,此属性为false。

使用create-hive-table命令涉及三个步骤:将数据导入HDFS,创建配置单元表,然后将HDFS数据加载到配置单元中。使用可以将其缩短为一个步骤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

    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;

  • 我认为从用户指南中进行复制和粘贴并不是特别有用。 (2认同)