测试数据准备如下
数据库名称:bigdata, 表名称: bigdata
1 | MariaDB [bigdata]> select * from bigdata; |
Sqoop import to hdfs
1 | sqoop import \ |
Sqoop import to hive table
1 | sqoop import \ |
(1) 通过Sqoop查看mysql数据库
1 | sqoop list-databases --connect jdbc:mysql://10.0.10.100:3306 --username root -P |
(2) 通过Sqoop查看MySQL指定数据库的表
1 | sqoop list-tables --connect jdbc:mysql://10.0.10.100:3306/bigdata --username root -P |
(3) Sqoop 导入 MySQL全表到hdfs指定目录
1 | sqoop import --connect jdbc:mysql://10.0.10.100:3306/bigdata --username root -P --table bigdata --warehouse-dir /sqoopim -m 1 |
验证导入
1 | 查看hadoop作业运行情况 |
1 | hadoop fs -ls /sqoopim/bigdata |
1 | hadoop fs -cat /sqoopim/bigdata/part-m-00000 |
(4) Sqoop 导入 MySQL全表到hdfs【指定导入分隔符】
1 | sqoop import --connect jdbc:mysql://10.0.10.100:3306/bigdata --username root -P --table bigdata --warehouse-dir /sqoopim -m 1 --fields-terminated-by "|" |
验证数据
1 | [hdfs@master1 ~]$ hadoop fs -cat /sqoopim/bigdata/part-m-00000 |
(5) Sqoop 仅导入MySQL部分数据
bigdata表,class_id≥5的数据进行导入
- 方式一: –query
1 | sqoop import --connect jdbc:mysql://10.0.10.100:3306/bigdata --username root -P --query "select * from bigdata where class_id>=5 and \$CONDITIONS" -m 1 --target-dir /sqoopim |
1 | [hdfs@master1 ~]$ hadoop fs -cat /sqoopim/part-m-00000 |
- 方式二:–where
1 | sqoop import --connect jdbc:mysql://10.0.10.100:3306/bigdata --username root -P --table bigdata --where "class_id>=10" -m 1 --target-dir /sqoopim2 |
1 | [hdfs@master1 ~]$ hadoop fs -cat /sqoopim2/part-m-00000 |
(6)Sqoop仅导入部分字段
1 | [hdfs@master1 ~]$ sqoop import --connect jdbc:mysql://10.0.10.100:3306/bigdata --username root -P --table bigdata --columns class_id,class_month,teacher -m 1 --target-dir /sqoopim |
1 | [hdfs@master1 ~]$ hadoop fs -cat /sqoopim/part-m-00000 |
扩展:将导入参数写入文件进行导入
vim ./sqoop.im 以下面命令为例
1 | [hdfs@master1 ~]$ sqoop import --connect jdbc:mysql://10.0.10.100:3306/bigdata --username root -P --table bigdata --columns class_id,class_month,teacher -m 1 --target-dir /sqoopim |
改为如下【要求:参数和值分别要占用独立行,且开头不能有空格】
1 | import |
使用文件导入
1 | sqoop --options-file ./sqoop.im |
其他
1 | sqoop在执行导入操作后,会在当前目录下生成名为“QueryResult.java”文件,这就是底层Mapreduce生成的JAVA类文件 |
- 本文作者: GaryWu
- 本文链接: https://garywu520.github.io/2019/03/12/Mars-Hadoop-Sqoop导入实战/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!