使用Sqoop将数据从RDBMS(关系型数据库) 到hdfs和Hive的导入导出
2018-11-08 19:03
453 查看
一、RDBMS 到 HDFS/HIVE
1.首先启动Mysql
service mysql start
2.在mysql中新建一张表并插入数据
# mysql -uroot -proot mysql> create table dept(id int primary key ,dname varchar(20),sex varchar(5)); mysql> insert into dept values(1,'tom','male'); mysql> insert into dept values(2,'jack','f');
3.导入数据
(1)全部导入bin/sqoop import \ --connect jdbc:mysql://Mage1:3306/bigdata11 \ --username root \ --password root \ --table dept \ --target-dir /user/dept \ --delete-target-dir \ --num-mappers 1 \ --fields-terminated-by "\t" \
( 2 )查询导入
bin/sqoop import \ --connect jdbc:mysql://Mage1:3306/bigdata11 \ --username root \ --password root \ --target-dir /user/dept \ --delete-target-dir \ --num-mappers 1 \ --fields-terminated-by "\t" \ --query 'select dname from emp where id <=1 and $CONDITIONS;'
注:这里的CONDITIONS不能省去,他的作用相当于MapReduce流程中的切片(分片)过程。
(3)导入指定列
bin/sqoop import \ --connect jdbc:mysql://Mage1:3306/bigdata11 \ --username root \ --password root --target-dir /user/dept \ --delete-target-dir \ --num-mappers 1 \ --fields-terminated-by "\t" \ --columns dname,sex \ --table emp
( 4 )关键字筛选查询导入数据
bin/sqoop import \ --connect jdbc:mysql://Mage1:3306/bigdata11 \ --username root \ --password root \ --target-dir /user/emp2 \ --delete-target-dir \ --num-mappers 1 \ --fields-terminated-by "\t" \ --table dept \ --where "id=1"
( 5 )RDBMS到HIVE
bin/sqoop import \ --connect jdbc:mysql://Mage1:3306/bigdata11 \ --username root \ --password root \ --table dept \ --num-mappers 1 \ --hive-import \ --fields-terminated-by "\t" \ --hive-overwrite \ --hive-table dept_hive
注:执行这个操作之前需要把将hive/lib中的hive-common-2.3.3.jar拷贝到sqoop的lib目录中
(6)从RDBMS增量导入数据到HIVE中(根据主键)
bin/sqoop import \ --connect jdbc:mysql://Mage1:3306/bigdata11 \ --username root \ --password root \ --table emp \ --num-mappers 1 \ --fields-terminated-by '\t' \ --target-dir /user/hive/warehouse/taff_hive1 \ --check-column eid \ --incremental append \ --last-value 3
注:append不能与–hive-的参数同时使用,并且RDBMS导入到HIVE的过程是:
先把RDBMS数据导入到HDFS本地目录下,然后再转移到HIVE中。
(7)从RDBMS增量导入数据到HIVE中(根据实时时间字段)
bin/sqoop import \ --connect jdbc:mysql://Mage1:3306/bigdata11 \ --username root \ --password root \ --table staff_timestamp \ --fields-terminated-by '\t' \ --check-column last_modified \ --incremental lastmodified \ --last-value "2018-11-8 21:46:30" \ --num-mappers 1 \ --append
二、HDFS/HIVE到RDBMS
(1)HDFS到RDBMS
bin/sqoop export \ --connect jdbc:mysql://Mage1:3306/bigdata11 \ --username root \ --password root \ --table dept \ --num-mappers 1 \ --export-dir /user/hive/warehouse/t1/part-m-00001 \ --input-fields-terminated-by '\t'
注:一定要清楚以什么为分割导出,不然会导致导出失败
(2)HIVE到RDBMS
bin/sqoop export \ --connect jdbc:mysql://Mage1:3306/bigdata11 \ --username root \ --password root \ --table dept \ --hive-table hive_dept
结束语:以上的sqoop在对RDBMS到HIVE/HDFS的一些常用的数据导入导出,另外sqoop还有许多命令&参数,有兴趣的小伙伴可以多多了解。
阅读更多相关文章推荐
- 使用sqoop实现关系型数据库、HDFS、Hive之间数据的导入导出
- Sqoop_具体总结 使用Sqoop将HDFS/Hive/HBase与MySQL/Oracle中的数据相互导入、导出
- 使用Sqoop导入导出关系型数据库数据
- sqoop工具介绍(hdfs与关系型数据库进行数据导入导出)
- Sqoop_详细总结 使用Sqoop将HDFS/Hive/HBase与MySQL/Oracle中的数据相互导入、导出
- 使用Sqoop将HDFS/Hive/HBase与MySQL/Oracle中的数据相互导入、导出
- Sqoop_详细总结 使用Sqoop将HDFS/Hive/HBase与MySQL/Oracle中的数据相互导入、导出
- 使用Sqoop将HDFS/Hive/HBase与MySQL/Oracle中的数据相互导入、导出
- 用Sqoop把数据从HDFS导入到关系型数据库
- 使用sqoop导入导出到MySQL、hdfs以及hive时出现的问题
- Hadoop数据工具sqoop,导入HDFS,HIVE,HBASE,导出到oracle
- 大数据基础(二)hadoop, mave, hbase, hive, sqoop在ubuntu 14.04.04下的安装和sqoop与hdfs,hive,mysql导入导出
- Hadoop Hive概念学习系列之HDFS、Hive、MySQL、Sqoop之间的数据导入导出(强烈建议去看)(十八)
- Sqoop1.4.4实现关系型数据库多表同时导入HDFS或Hive中
- Sqoop2入门之导入关系型数据库数据到HDFS上(sqoop2-1.99.4版本)
- 使用Sqoop,最终导入到hive中的数据和原数据库中数据不一致解决办法
- 使用sqoop将HDFS数据导出到RDBMS,map100%reduce0%问题
- Sqoop2——导入关系型数据库数据到HDFS上
- sqoop导入关系型数据库的数据至hive