博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用Sqoop从mysql向hdfs或者hive导入数据时出现的一些错误
阅读量:5892 次
发布时间:2019-06-19

本文共 1821 字,大约阅读时间需要 6 分钟。

1.原表没有设置主键,出现错误提示:

ERROR tool.ImportTool: Error during import: No primary key could be found for table xxx. Please specify one with --split-by or perform a sequential import with '-m 1'

提示说明的很清楚:在表xxx没有发现主键,使用--split-by指定一个column作为拆分字段或者在命令行上添加 ‘-m 1',为什么会出现这样的错误提示,我们需要了解一下Sqoop的并行导入机制:

一般来说,Sqoop会创建4个进程,同时进行数据导入操作

如果要导入表的主键为id,并行的数量为4,那么Sqoop首先会执行如下一个查询:

select max(id) as max, select min(id) as min from table [where 如果指定了where子句];

通过这个查询,获取到需要拆分字段(id)的最大值和最小值,假设分别是1和1000。

然后,Sqoop会根据需要并行导入的数量,进行拆分查询,比如上面的这个例子,并行导入将拆分为如下4条SQL同时执行:

select * from table where 0 <= id < 250;

select * from table where 250 <= id < 500;

select * from table where 500 <= id < 750;

select * from table where 750 <= id < 1000;

注意,这个拆分的字段需要是整数。

如果要导入的表中没有主键,则我们应该手动选取一个合适的拆分字段。

首先查看表中有那些字段,如查看表student:desc student;  

表中有id,name两个字段,那我们就可以选取id作为拆分字段,将表导入hive时在命令中添加 --split-by id,就不会报错了。

参考:http://www.cnblogs.com/gpcuster/archive/2011/03/01/1968027.html

2.Sqoop Hive exited with status 1

当从mysql向Hive导入数据时,执行:

sqoop import --connect jdbc:mysql://localhost/hive --username hive --password hive --table dept_InnoDB --hive-table dept_InnoDB --hive-import --split-by deptno

出现以下错误:

13/06/27 18:35:05 INFO hive.HiveImport: Exception in thread "main" java.lang.NoSuchMethodError: org.apache.thrift.EncodingUtils.setBit(BIZ)B
13/06/27 18:35:10 ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: Hive exited with status 1

google之,原来是机器上装的hive和hbase的版本不兼容造成的,在这里具体的说是hive和habse所使用的thrift版本不一样。当hive和hbase的jar包都添加到CLASSPATH时,运行Sqoop时只会激活一个版本的thrift,这样往往导致hive运行出错。

执行:

locate *thrift*.jar

看到:

果然,hive和hbase引用了不同版本的thrift.

这个问题解决起来也非常简单,将HBASE_HOME设置为空,让Sqoop不能加载hbase版本的thrift就OK了。

 

参考:http://stackoverflow.com/questions/16133156/sqoop-hive-exited-with-status-1

转载于:https://www.cnblogs.com/bjtu-leefon/p/3160549.html

你可能感兴趣的文章
InfoQ播客:Tal Weiss谈JVM的可观测性、插桩、以及字节码操作
查看>>
Spring 5.0 GA版本发布,支持JDK9及反应式编程
查看>>
用户故事驱动的文档
查看>>
联合国儿童基金会投资六家区块链初创企业,目标是解决“全球性挑战”
查看>>
微软和Docker 合作,简化云原生应用的包装和运行
查看>>
版本控制、Git及其在企业中的应用
查看>>
Oracle回应用户锁定,自治数据库是更好选择
查看>>
Mozilla开发全新的公开网络API WebXR 来实现增强现实
查看>>
深入浅出Tensorflow(五):循环神经网络简介
查看>>
宕机的阿里云们正在杀死运维?
查看>>
Facebook开源图像处理库Spectrum,优化移动端图像生成
查看>>
.NET Core 2.1的重大缺陷延长了.NET Core 2.0的寿命
查看>>
GitOps:Weaveworks通过开发者工具实现CI/CD
查看>>
《A Seat at the Table》作者访谈录
查看>>
Kubernetes 状态管理与扩展
查看>>
Three.js 最新版本改进了对WebGL的支持
查看>>
在Hyperledger Indy中实现隐私设计
查看>>
Apache Ignite 初探
查看>>
阿里云技术动态:Xen漏洞热补丁修复、异地双活、ODPS新功能与金融互联网
查看>>
京东618:ReactNative框架在京东无线端的实践
查看>>