今天又是美好的一天,让我对sqoop有了个基础的认识。
故事是这样开始的,今天产品跟我沟通了一个任务,这个任务的数据来源被开发放到了关系型数据库mysql上,而我平时是用hive写sql,从hdfs读写数据了,那么问题来了,mysql上的数据我怎么获取?
1.直接用sql命令行界面或者客户端进行读取mysql,对于目前的我以及公司电脑工具的局限性,这条路不太好走。另外我还要将mysql的数据要和hdfs的数据进行合并处理了。
2.将mysql的数据迁移到hdfs上,我知道的做法可以用python的pymysql与mysql库进行交互,读取数据转换成pyspark的dataframe然后在写入到hdfs上。显然这种做法比较麻烦。
正当我为此事发愁,小明(化名),此乃我命中贵人也,问我看起来被什么困扰了,我向他诉说我的困境,牛人就是不一般,开怀大笑之后,跟我说sqoop就可以很好的解决这个问题。
额,那么问题来了,什么是sqoop?
一、sqoop的含义
sqoop是sql to hadoop的缩写,就是将关系型数据库的数据迁移到hdfs上,俗话说,顾名思义,但是这里名称只说对了一半,sqoop 是 apache 旗下一款“Hadoop 和关系数据库服务器之间传送数据”的工具。核心的功能有两个:1.导入、迁入 2.导出、迁出
导入数据:MySQL等关系型数据库导入数据到 Hadoop 的 HDFS、HBASE 等数据存储系统
导出数据:从 Hadoop 的文件系统中导出数据到关系数据库 mysql 等 。
Sqoop 的本质是一个命令行工具。sqoop的迁移命令会转换成MapReduce程序,Sqoop所执行的操作是并行的,数据传输性能高,具备较好的容错性,并且能够自动转换数据类型。
![76690ba7fadd450c554516ad8ff2589b.png](https://i-blog.csdnimg.cn/blog_migrate/68f8be4cd34275b2b7eab7a49a6b9441.jpeg)
二、sqoop的基本命令
都说了sqoop是命令行工具,当然有很多命令了,使用 sqoop help 来查看sqoop 支持哪些命令
具体可以参见Sqoop导出 - Sqoop教程™
最后的最后,这个mysql的数据成功迁移到hdfs上,但是这个操作还不是我做的,还是靠xx大神carry,感谢!
每天学习一点,每天进步一点,生活更灿烂一点~