谁能说出create-hive-table  &hive-import方法之间的区别?两者都会创建一个配置单元表,但是每个单元的意义是什么?
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命令:
 
涉及三个步骤:
将数据从RDBMS导入到HDFS
sqoop import --connect jdbc:mysql://localhost:3306/hadoopexample --table employees --split-by empid -m 1;
使用create-hive-table命令创建配置单元表
sqoop create-hive-table --connect jdbc:mysql://localhost:3306/hadoopexample --table employees --fields-terminated-by ',';
将数据加载到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;