Sqoop安装部署 :https://blog.csdn.net/weixin_45102492/article/details/104600343
sqoop的一些常用命令及参数 :https://blog.csdn.net/weixin_45102492/article/details/92438970
sqoop数据导入 :https://blog.csdn.net/weixin_45102492/article/details/90727928
Sqoop数据导出 :https://blog.csdn.net/weixin_45102492/article/details/104675105
Sqoop之hive的job :https://blog.csdn.net/weixin_45102492/article/details/104608162
Sqoop抽取数据常见错误 :https://blog.csdn.net/weixin_45102492/article/details/104608006
sqoop检测与数据库的连接
sqoop list-databases --connect jdbc:mysql://localhost:3306/ --username root --password ******
sqoop导入数据,其中localhost可以写成主机的ip或主机名字
全部导入
sqoop import \
--connect jdbc:mysql://localhost:3306/hyk \
--driver com.mysql.jdbc.Driver \
--username root \
--password 123456 \
--table dept \
--target-dir /hyk/data/test \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t"
导入指定的列到HDFS
sqoop import \
--connect jdbc:mysql://localhost:3306/hyk \
--driver com.mysql.jdbc.Driver \
--username root \
--password 123456 \
--table dept \
--columns 'id,course' \
--target-dir /hyk/data/test \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t"
提示:columns中如果涉及到多列并且不指定–fields-terminated-by分割符,mysql中导出默认用逗号分隔
参数同性:
参数 | 参数描述 |
---|---|
–table | mysql中的表 |
–delete-target-dir | 如果hdfs中的目标目录存在, 则删除 |
–target-dir | 导入hdfs中的目录 |
–split-by | 切分工作单元, 后面需要指定column |
-m | 使用n个map task来并行导入。一般和–split-by搭配使用 |
–columns | 导入指定列,和table搭配使用 |
–fields-terminated-by | 指定导入数据每列直接的分割符 |
–driver | 指定mysql数据库驱动 |
–where | 指定条件 |
–query | 指定运行的sql语句,不能和–table搭配使用 |
查询导入
sqoop import \
--connect jdbc:mysql://localhost:3306/hyk \
--driver com.mysql.jdbc.Driver \
--username root \
--password 123456 \
--query 'select id,course,score from dept where id > 6 and $CONDITIONS' \
--target-dir /hyk/data/test \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t"
提示:must contain '$CONDITIONS' in WHERE clause.
如果query后使用的是双引号,则$CONDITIONS前必须加转移符,防止shell识别为自己的变量。如下单引号和双引号的区别:
--query 'select id,course,score from dept where id > 6 and $CONDITIONS'
--query "select id,course,score from dept where id > 6 and \$CONDITIONS"
使用sqoop关键字筛选查询导入数据
sqoop import \
--connect jdbc:mysql://localhost:3306/hyk \
--driver com.mysql.jdbc.Driver \
--username root \
--password 123456 \
--table dept \
--target-dir /hyk/data/test \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t" \
--where "id=1"
从数据库导入到hive
sqoop import \
--connect jdbc:mysql://localhost:3306/hyk \
--driver com.mysql.jdbc.Driver \
--username root \
--password 123456 \
--table dept \
--num-mappers 1 \
--hive-import \
--fields-terminated-by "\t" \
--hive-overwrite \
--hive-table sqoop_db.dept_ods
提示:该过程分为两步,第一步将数据导入到HDFS,第二步将导入到HDFS的数据迁移到Hive仓库
sqoop导入到hive的分区表
sqoop import \
--connect jdbc:mysql://localhost:3306/hyk \
--driver com.mysql.jdbc.Driver \
--username root \
--password 123456 \
--num-mappers 1 \
--hive-import \
--hive-partition-key 'dept_day' \
--hive-partition-value '20191202' \
--target-dir /hyk/data/dept1 \
--fields-terminated-by "\t" \
--hive-overwrite \
--hive-table sqoop_db.dept_ods \
--query 'select * from dept where $CONDITIONS'
RDBMS到Hbase
sqoop import \
--connect jdbc:mysql://localhost:3306/hyk \
--driver com.mysql.jdbc.Driver \
--username root \
--password 123456 \
--table dept \
--columns "id,course,score" \
--column-family "info" \
--hbase-create-table \
--hbase-row-key "id" \
--hbase-table "hbase_dept" \
--num-mappers 1 \
--split-by id