sqoop1.4.7 从MySQL导入数据到Hive

准备

登录 hadoop1

启动 hadoop

cd /program
bin/hadoop.sh start

启动Hive

bin/hive.sh start

复制包

sqoop 需要用到 hive 的 hive-common-3.1.2.jar 包

执行下面命令,复制包:

cp /program/hive-3.1.2/lib/hive-common-3.1.2.jar /program/sqoop-1.4.7/lib/

全部导入

将MySQL某表所有字段、所有数据,导入到 Hive中

提示:如果表不存在,会自动创建表
提示:数据库必须存在,否则报错

cd sqoop-1.4.7
bin/sqoop import \
--connect jdbc:mysql://hadoop1:3306/scott \
--table dept \
--username root \
--password root \
--fields-terminated-by '\t' \
--m 1 \
--hive-import \
--hive-database default \
--hive-overwrite \
--hive-table sqoop_dept

解释

  • hive-import:表示导入到hive
  • hive-overwrite:覆盖数据
  • hive-database default:导入到 hive 的 default 数据库中
  • hive-table dept:表示导入 hive 到 dept 表

执行过程

执行 2个 MapReduce:

  • 第一个 MapReduce:查询MySQL,导出数据,HDFS 路径:/user/root

  • 第二个 MapReduce:将数据导入到 Hive 中,HDFS 路径:/hive/warehouse/sqoop_dept

注意

参数名和参数值中间只能有一个空格,否则可能报错

如下:

--password   root  # 前面多出空格,会报密码错误
--target-dir    /test_sqoop_dept   # 前面多出空格,生成的目录只有空格

查看数据

连接 Hive 数据库,执行下面sql,查看数据:

select * from default.sqoop_dept

原文出处:/show_1IX3X7guRCGi.html