Sqoop把hive中的数据导出到mysql中

首先

 

        

官网上对sqoop的定义是:

Sqoop是一个被设计用来在hadoop大数据平台和结构化数据库(比如关系型数据库)之间传输批量数据的一个工具。既然是一个工具那么用起来应该是比较简单的,可是实际操作时总会出现这样或者那样的错误。

由于工作中会有各种各样的需求,但是大多最终计算的结果都要以excel的形式给到需求方,数据量不太大的时候可以使用navicat自带的导出功能或者hue的导出功能就可以直接把数据导成excel或者其他格式的文件,但是数据量一旦太大的话,这些工具对于一次性导出的数据量是有限制的,此时相对来说sqoop比较好一些,因为sqoop的底层是走mapreduce程序所以会比较稳定,而且对数据量没有限制。当然也可以使用spark的bulkload方式,不过spark是基于内存处理的,设计好的话应该也是没有问题的。

这里我打算把hive中的一张表skuattributes 导出到mysql中:

Hive中这张表的表结构是:

 

字段类型都是string类型的,此时要在mysql中创建好表结构相同的一张表:

我给它命名成相同的名字:skuattributes;

Mysql 中创建的表结构信息:

 

Mysql中没有string类型,可以用varchar类型代替(varchar是可变长字符串类型)

这样就建好了与hive对应的表

下面开始使用sqoop导出语句:

 

然而执行结果却报错了:

 

说找不到manager:

仔细查看发现url写错啦,

 

红线地方少些冒号:

加上之后:

 

重新执行

 

一共导出2966条数据,到底对不对呢,我去hive中查一下:

 

的确是2966条数据:

最后再去mysql中查看一下数据量对不对:

 

确认过眼神是对的没错啦。

其实原理是不难的,就是语句调试以及出现的一些语法错误。

Hive中查看表的hdfs路径可以直接在hive命令行中输入:

Desc formatted tablename;

其中location对应的就是表在hdfs上的路径信息啦

 

今天就写到这了。

猜你喜欢

转载自blog.csdn.net/qq_40659784/article/details/84708661