SQOOP从MySQL导入数据到Hive
2017-10-22 22:31
459 查看
一、导入Hive表时自动创建表
1、执行sqoop语句
–hive-import 说明sqoop此处导入是导入到hive而不是其他
–create-hive-table 自动创建表(如果存在会报错)
–hive-table 指定自动创建表的名称
2、执行上面语句是报错
解决办法,将Hive lib下面的jar包拷贝到SQOOP的lib下
3、再次执行就不会报错了,查看Hive中是否有emp_mysql表,查看emp_mysql表会发现数据已导入成功
4、弊端
使用–create-hive-table参数来自动创建表的方法会发现表里面的字段类型和我们所预期的不一样,所以生产上一般先把Hive创建好,再来导入。
二、手动创建Hive表再导入
创建Hive表时的分隔符必须和导入时指定的分割相同
1、Hive中创建emp表并制定分隔符为\t
2、SQOOP导入语句必行指定分隔符 –fields-terminated-by
3、emp表已有数据
4、 –hive-overwrite参数是覆盖数据
三、导入数据到分区表
1、Hive中创建分区表emp_part
2、导入分区数据
–hive-partition-key 分区字段
–hive-partition-value 分区值
1、执行sqoop语句
sqoop import \ --connect jdbc:mysql://hadoop001:3306/sqoop \ --username root \ --password 123456 \ --table emp_etl \ -m 1 \ --hive-import \ --create-hive-table \ --hive-table emp_mysql
–hive-import 说明sqoop此处导入是导入到hive而不是其他
–create-hive-table 自动创建表(如果存在会报错)
–hive-table 指定自动创建表的名称
2、执行上面语句是报错
ERROR hive.HiveConfig: Could not load org.apache.hadoop.hive.conf.HiveConf. Make sure HIVE_CONF_DIR is set correctly.
解决办法,将Hive lib下面的jar包拷贝到SQOOP的lib下
cp hive-common-1.1.0-cdh5.7.0.jar $SQOOP_HOME/lib cp hive-shims* $SQOOP_HOME/lib
3、再次执行就不会报错了,查看Hive中是否有emp_mysql表,查看emp_mysql表会发现数据已导入成功
hive (default)> show tables; OK tab_name emp emp_mysql testhivedrivertable
4、弊端
使用–create-hive-table参数来自动创建表的方法会发现表里面的字段类型和我们所预期的不一样,所以生产上一般先把Hive创建好,再来导入。
二、手动创建Hive表再导入
创建Hive表时的分隔符必须和导入时指定的分割相同
1、Hive中创建emp表并制定分隔符为\t
create table emp( empno int, ename string, job string, mgr int, hiredate string, sal double, comm double, deptno int )row format delimited fields terminated by '\t'
2、SQOOP导入语句必行指定分隔符 –fields-terminated-by
sqoop import \ --connect jdbc:mysql://hadoop001:3306/sqoop \ --username root \ --password 123456 \ --table emp_etl \ -m 1 \ --hive-import \ --hive-table emp \ --fields-terminated-by '\t'
3、emp表已有数据
hive (default)> select * from emp; OK emp.empno emp.ename emp.job emp.mgr emp.hiredate emp.sal emp.comm emp.deptno 7369 SMITH CLERK 7902 1980-12-17 800.0 NULL 20 7499 ALLEN SALESMAN 7698 1981-2-20 1600.0 300.0 30 7521 WARD SALESMAN 7698 1981-2-22 1250.0 500.0 30 7566 JONES MANAGER 7839 1981-4-2 2975.0 NULL 20 7654 MARTIN SALESMAN 7698 1981-9-28 1250.0 1400.0 30
4、 –hive-overwrite参数是覆盖数据
三、导入数据到分区表
1、Hive中创建分区表emp_part
create table emp_part( empno int, ename string, job string, mgr int, hiredate string, sal double, comm double, deptno int )partitioned by (event_month string) row format delimited fields terminated by '\t';
2、导入分区数据
sqoop import \ --connect jdbc:mysql://hadoop001:3306/sqoop \ --username root \ --password 123456 \ --table emp_etl \ -m 1 \ --hive-import \ --hive-table emp_part \ --fields-terminated-by '\t' \ --hive-partition-key 'event_month' \ --hive-partition-value '2018-08-08'
–hive-partition-key 分区字段
–hive-partition-value 分区值
相关文章推荐
- Sqoop增量从MySQL中向hive导入数据
- python脚本用sqoop把mysql数据导入hive数据仓库中
- 使用Sqoop将HDFS/Hive/HBase与MySQL/Oracle中的数据相互导入、导出
- sqoop从mysql导入数据到Hive,但在hive却找不到table
- 利用Sqoop将MySQL数据导入Hive中
- Sqoop_详细总结 使用Sqoop将HDFS/Hive/HBase与MySQL/Oracle中的数据相互导入、导出
- sqoop 从mysql导入hive 时指定数据库报找不到该数据库
- linux中sqoop实现hive数据导入到mysql
- Sqoop将MySQL中数据导入到Hive表中
- 利用sqoop将hive数据导入导出数据到mysql
- Sqoop将MySQL和Oracle的数据导入HIVE和Hbase
- sqoop将Mysql数据导入Hive中
- Sqoop_详细总结 使用Sqoop将HDFS/Hive/HBase与MySQL/Oracle中的数据相互导入、导出
- sqoop mysql数据导入Hive中
- python脚本用sqoop把mysql数据导入hive数据仓库中
- 利用sqoop将hive数据导入导出数据到mysql
- 利用Sqoop从MySQL数据源向Hive中导入数据
- 用Sqoop将mysql中的表和数据导入到Hive中
- 使用Sqoop将HDFS/Hive/HBase与MySQL/Oracle中的数据相互导入、导出
- sqoop 导入mysql数据到hive中,把多个mysql字段数据类型转换hive数据类型