sqoop数据导入

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数据导入_第1张图片
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

你可能感兴趣的:(大数据学习)