文档章节

利用sqoop1.6对mysql和hive进行同步的问题

aibati2008
 aibati2008
发布于 2016/04/26 13:36
字数 552
阅读 67
收藏 0

问题1:

从mysql数据库中导入到hive中可以执行:

sqoop import --connect jdbc:mysql://localhost/gamewave --username root --password 123456 --table log --hive-import -m 1

其中-m 1 参数代表的含义是使用多少个并行,这个参数的值是1,说明没有开启并行功能。

将m参数的数值调为5或者更大,Sqoop就会开启5个进程,同时进行数据的导入操作。

注意, 如果报以下错误:

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
    at org.apache.sqoop.mapreduce.db.DBInputFormat.setConf(DBInputFormat.java:167)
    at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:73)
    at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:133)
    at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:726)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:340)
    at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:167)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:415)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1556)
    at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:162)
Caused by: java.lang.RuntimeException: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

这是因为在并行导入,集群中的其他节点并没有mysql的访问权限(设置为%也不行, 需要在mysql中x显式指定IP),执行如下命令:

GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'192.168.64.16' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

如果你的mysql不能显式指定IP,比如我们公司服务器是用的阿里云的rds,就只有把其他节点的ip加入白名单。

 

 

问题2:

在同步过程中,如果不加其他参数,导入的数据默认的列分隔符是'\001',默认的行分隔符是'\n'。这样问题就来了,如果导入的数据中有'\n',hive会认为一行已经结束,后面的数据被分割成下一行,而且会出现数据不一致的情况。

Sqoop也指定了参数 --fields-terminated-by和 --lines-terminated-by来自定义行分隔符和列分隔符。但是目前行分隔符只支持'\n', 所以该方法行不通.

查看帮助文档后发现有如下2个参数:

--hive-drop-import-delims                                   

Drops \n\r, and \01 from string fields when importing to Hive.

--hive-delims-replacement

Replace \n\r, and \01 from string fields with user defined string when importing to Hive.

因此加上这2个参数来把导入数据中包含的hive默认的分隔符去掉或替换。

sqoop import --connect jdbc:mysql://100.99.74.222:3306/fmcm_cms --username thecover --password Thecover_2016 --table fm_pgc_news --fields-terminated-by '\t' --hive-import --hive-database fmcm --create-hive-table --hive-delims-replacement ' '

 

© 著作权归作者所有

共有 人打赏支持
aibati2008
粉丝 13
博文 82
码字总数 60908
作品 0
成都
技术主管
sqoop导入数据到Base并同步hive与impala

使用Sqoop从MySQL导入数据到Hive和HBase 及近期感悟 基础环境 Sqool和Hive、HBase简介 测试Sqoop 使用Sqoop从MySQL导入数据到Hive 使用Sqoop从MySQL导入数据到HBase 关于Sqoop2 综上所述 其他...

hblt-j
07/20
0
0
基于Impala平台打造交互查询系统

本文来自网易云社区 原创: 蒋鸿翔 DataFunTalk 本文根据网易大数据蒋鸿翔老师DataFun Talk——“大数据从底层处理到数据驱动业务”中分享的《基于Impala平台打造交互查询系统》编辑整理而成...

网易云
08/30
0
0
京东大数据工程师教你怎样用Sqoop

Sqoop是什么 Sqoop:SQL-to-Hadoop 连接 传统关系型数据库 和 Hadoop 的桥梁 把关系型数据库的数据导入到 Hadoop 系统 ( 如 HDFS HBase 和 Hive) 中; 把数据从 Hadoop 系统里抽取并导出到关...

JAVA丶学习
04/16
0
0
Sqoop-1.4.4工具import和export使用详解

Sqoop可以在HDFS/Hive和关系型数据库之间进行数据的导入导出,其中主要使用了import和export这两个工具。这两个工具非常强大,提供了很多选项帮助我们完成数据的迁移和同步。比如,下面两个潜...

Zero零_度
2016/07/24
27
0
hadoop2.7.0集群,使用中遇到的bug及解决办法

hadoop环境是2.7.0的集群环境,使用sqoop 1.4.6执行从mysql向hive的数据导入。 执行过程中报错,如下方的日志信息。但是查询hive中的数据,发现实际数据已经过来了,但因为mysql的数据表较多...

灵宝
2015/09/28
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

elastic search+kibana 5.6.12安装指南

前提准备: 1,安装jdk, We recommend installing Java version 1.8.0_131 or later. 2, 设置文件最大打开数(使用命令ulimit -n查看) ulimit -n 65536 3, 创建用户elastic/用户组elastic gro...

PageYi
20分钟前
1
0
安装mongodb碰到error: unpacking of archive failed on file /etc/init.d/mongod;5bcec214: cpio: open如何解决

今用yum安装mongodb4.0.3发现一个错误,当用yum install 安装mongo-org 时除了mongodb-org-server 没有安装以外其他的都安装正确,重新安装mongodb-org-server 时报如下错误信息 在一篇老外 ...

chanking
22分钟前
1
0
O2OA:企业办公数字化转型的更佳选择

在全球都在积极探索由新一轮信息技术所引发的第四次工业革命时,一场激发企业内生动力的数字化运动在互联网企业和传统企业之间却呈现出两种截然不同的状态。   传统企业办公数字化不彻底仍...

超能之法师
25分钟前
1
0
基于SylixOS 对 Goahead 进行配置使用 OpenSSL

1. 编译并部署OpenSSL SylixOS支持OpenSSL,git地址为:http://git.sylixos.com/repo/openssl.git 获取OpenSSL工程源码后,导入RealEvo-IDE中编译,编译完成后生成动态库文件和openssl可执行...

Baiqq
27分钟前
1
0
nginx+tomcat均衡负载

一、安装好nginx环境,启动至少两个的tomcat服务; 此处tomcat访问地址为:http://192.168.106.128:1000/、http://192.168.106.128:1001/、http://192.168.106.128:1002/ 二、修改nginx配置文...

狼王黄师傅
29分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部