使用sqoop从Oracle或mysql抽取数据到HDFS遇到的报错及解决

一、参考文档:

1、https://www.rittmanmead.com/blog/2014/03/using-sqoop-for-loading-oracle-data-into-hadoop-on-the-bigdatalite-vm/

2、http://www.cnblogs.com/bjtu-leefon/archive/2013/06/28/3160549.html


二、使用脚本 
----sqoop import zdsd


使用注意:


1、执行节点 Sqoop_home/lib 里添加目标数据库的jar
2、-m 表示并发启动map的数量 -m 1表示启动一个map, 指定-m > 1时,必须添加 --split-by 指定分割列,
,分割列要求至少满足两个条件中任一个:1)目标表有主键   2)有num 类型或者date类型,因为会执行 min(split_column),max(split_column)操作,决定如何分割
否则无法启用多个map
3、指定map数量不应过大,不然会增加数据源的压力


4、执行复杂sql 需要使用 --query 参数


sqoop import --connect jdbc:oracle:thin:@10.**.**.**:1521/jwy --username ** --password ** --table ZHZY.ZDSF --target-dir '/hawq_external/zdsd_sqoop_test1' -m 1


----kkxx   -m > 1 必须有主键,,,如果没有主键则必须指定split-by 分布列,,,,split-by  
---Generating splits for a textual index column allowed only in case of "-Dorg.apache.sqoop.splitter.allow_text_splitter=true" property passed as a parameter 会求最大值,最小值,,,必须不能是text类型
sqoop import --connect jdbc:oracle:thin:@10.**.**.**:1521/jwy --username ** --password ** --table ZHZY.CLD_TFC_PASS171201171215 --target-dir '/hawq_external/hg_sqoop_kkxx' -m 20 --split-by ZHKRKSJ


-ZHZY.B_XDRY


sqoop import --connect jdbc:oracle:thin:@10.**.**.**:1521/jwy --username ** --password ** --table table_name --target-dir '/hawq_external/hg_xdry_sqoop_test1' -m 1


---ZHZY.V_QS_JJ_KKXX 视图


sqoop import --connect jdbc:oracle:thin:@10.**.**.**:1521/jwy --username ** --password ** --table ZHZY.V_QS_JJ_KKXX --target-dir '/hawq_external/hg_v_kkxx_sqoop_test' -m 10






三、使用过程中的报错


1、在Kettle中用自带作业中的sqoop import
 
2017/12/15 15:16:23 - Spoon - 正在开始任务...
2017/12/15 15:16:23 - sqoop_kk_zhugandao - 开始执行任务
2017/12/15 15:16:23 - sqoop_kk_zhugandao - 开始项[Sqoop Import]
2017/12/15 15:16:23 - Sqoop Import - 2017/12/15 15:16:23 - fs.default.name is deprecated. Instead, use fs.defaultFS
2017/12/15 15:16:23 - Sqoop Import - 2017/12/15 15:16:23 - $SQOOP_CONF_DIR has not been set in the environment. Cannot check for additional configuration.
2017/12/15 15:16:23 - Sqoop Import - 2017/12/15 15:16:23 - Running Sqoop version: 1.4.6.2.5.3.0-37
2017/12/15 15:16:23 - Sqoop Import - 2017/12/15 15:16:23 - $SQOOP_CONF_DIR has not been set in the environment. Cannot check for additional configuration.
2017/12/15 15:16:23 - Sqoop Import - 2017/12/15 15:16:23 - Data Connector for Oracle and Hadoop is disabled.
2017/12/15 15:16:23 - Sqoop Import - ERROR (version 6.1.0.1-196, build 1 from 2016-04-07 12.08.49 by buildguy) : Error running Sqoop
2017/12/15 15:16:23 - Sqoop Import - ERROR (version 6.1.0.1-196, build 1 from 2016-04-07 12.08.49 by buildguy) : java.lang.NoClassDefFoundError: org/apache/avro/LogicalType
2017/12/15 15:16:23 - Sqoop Import - at org.apache.sqoop.manager.DefaultManagerFactory.accept(DefaultManagerFactory.java:66)
2017/12/15 15:16:23 - Sqoop Import - at org.apache.sqoop.ConnFactory.getManager(ConnFactory.java:184)
2017/12/15 15:16:23 - Sqoop Import - at org.apache.sqoop.tool.BaseSqoopTool.init(BaseSqoopTool.java:282)
2017/12/15 15:16:23 - Sqoop Import - at org.apache.sqoop.tool.ImportTool.init(ImportTool.java:89)
2017/12/15 15:16:23 - Sqoop Import - at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:610)
2017/12/15 15:16:23 - Sqoop Import - at org.apache.sqoop.Sqoop.run(Sqoop.java:147)
2017/12/15 15:16:23 - Sqoop Import - at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
2017/12/15 15:16:23 - Sqoop Import - at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:183)
2017/12/15 15:16:23 - Sqoop Import - at org.apache.sqoop.Sqoop.runTool(Sqoop.java:225)
2017/12/15 15:16:23 - Sqoop Import - at org.pentaho.hadoop.shim.common.ClassPathModifyingSqoopShim$1.call(ClassPathModifyingSqoopShim.java:81)
2017/12/15 15:16:23 - Sqoop Import - at org.pentaho.hadoop.shim.common.ClassPathModifyingSqoopShim$1.call(ClassPathModifyingSqoopShim.java:1)
2017/12/15 15:16:23 - Sqoop Import - at org.pentaho.hadoop.shim.common.ClassPathModifyingSqoopShim.runWithModifiedClassPathProperty(ClassPathModifyingSqoopShim.java:62)
2017/12/15 15:16:23 - Sqoop Import - at org.pentaho.hadoop.shim.common.ClassPathModifyingSqoopShim.runTool(ClassPathModifyingSqoopShim.java:75)
2017/12/15 15:16:23 - Sqoop Import - at org.pentaho.hadoop.shim.common.delegating.DelegatingSqoopShim.runTool(DelegatingSqoopShim.java:41)
2017/12/15 15:16:23 - Sqoop Import - at org.pentaho.big.data.impl.shim.sqoop.SqoopServiceImpl.runTool(SqoopServiceImpl.java:62)
2017/12/15 15:16:23 - Sqoop Import - at org.pentaho.big.data.kettle.plugins.sqoop.AbstractSqoopJobEntry.executeSqoop(AbstractSqoopJobEntry.java:302)
2017/12/15 15:16:23 - Sqoop Import - at org.pentaho.big.data.kettle.plugins.sqoop.AbstractSqoopJobEntry$1.run(AbstractSqoopJobEntry.java:273)
2017/12/15 15:16:23 - Sqoop Import - at java.lang.Thread.run(Thread.java:745)
2017/12/15 15:16:23 - Sqoop Import - Caused by: java.lang.ClassNotFoundException: org.apache.avro.LogicalType
2017/12/15 15:16:23 - Sqoop Import - at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
2017/12/15 15:16:23 - Sqoop Import - at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
2017/12/15 15:16:23 - Sqoop Import - at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
2017/12/15 15:16:23 - Sqoop Import - at org.pentaho.di.core.plugins.KettleURLClassLoader.loadClassFromParent(KettleURLClassLoader.java:89)
2017/12/15 15:16:23 - Sqoop Import - at org.pentaho.di.core.plugins.KettleURLClassLoader.loadClass(KettleURLClassLoader.java:108)
2017/12/15 15:16:23 - Sqoop Import - at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
2017/12/15 15:16:23 - Sqoop Import - at java.lang.Class.forName0(Native Method)
2017/12/15 15:16:23 - Sqoop Import - at java.lang.Class.forName(Class.java:348)
2017/12/15 15:16:23 - Sqoop Import - at org.pentaho.hadoop.shim.HadoopConfigurationClassLoader.loadClass(HadoopConfigurationClassLoader.java:99)
2017/12/15 15:16:23 - Sqoop Import - at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
2017/12/15 15:16:23 - Sqoop Import - ... 18 more
2017/12/15 15:16:23 - sqoop_kk_zhugandao - 完成作业项[Sqoop Import] (结果=[false])
2017/12/15 15:16:23 - sqoop_kk_zhugandao - 任务执行完毕
2017/12/15 15:16:23 - Spoon - 任务已经结束.
  
2、

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

3.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://www.mzph.cn/news/570738.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

POJ1426-Find The Multiple(DFS)

给出一个整数n&#xff0c;(1 < n < 200)。求出任意一个它的倍数m&#xff0c;要求m必须只由十进制的0或1组成。 #include <iostream>using namespace std;int N,flag;void DFS(int m,long long n) {if(m19) return;if(flag) return;if(n%N0){flag1;cout<<n&…

Spark集群,多个版本Python/Python Package管理

文章转载自&#xff1a;http://blog.csdn.net/gongbi917/article/details/52369025 仅用于个人学习备忘收藏&#xff0c;转载请注明原文地址 进年来&#xff0c;越来越多的数据科学家、分析人员、数据工程师运用Python语言进行数据分析和机器学习。Spark在0.7版本开始支持Pyth…

【网络流24题】【LOJ6224】深海机器人问题(最大费用最大流)

problem 给定一个n*m的网格&#xff0c;每条边上有一个权值给定每个机器人的出发位置和目标位置求权值最大solution 拆边&#xff0c;每条边拆成2条&#xff0c;第一条容量1&#xff0c;费用c[i]&#xff0c;第二条容量inf,费用0&#xff1b;建超级源汇&#xff08;s到每个出发…

Oracle创建表空间、用户、分配权限、导出、导入数据

文章转载&#xff1a;https://segmentfault.com/a/1190000006704150 仅用于个人学习、收藏自查&#xff0c;谢谢原作者。 以系统管理员登录&#xff0c;命令&#xff1a;sqlplus / as sysdba #首先需要 su - oracle 进入到oracle用户下 一、分为四步 /第1步&#xff1a;创…

函数简介

一、函数 函数就是一个功能&#xff0c;一个方法&#xff0c;简化代码。#一个函数只做一件事#重复的代码就是低级的#实现同样的功能&#xff0c;代码越少越好 函数必须得调用才能执行。 1、函数的简单介绍&#xff0c;如下 1 def say(name):# 函数&#xff0c;形参&#xff0c;…

ORA-65096: 公用用户名或角色名无效引发的思考

解决方式&#xff1a; alter session set "_ORACLE_SCRIPT"true; alter session set containerPDBORCL;原因&#xff1a;查官方文档得知“试图创建一个通用用户&#xff0c;必需要用C##或者c##开头”&#xff0c;这时候心里会有疑问&#xff0c;什么是common user&am…

VS封装给Unity使用的DLL

首先: 注意两点,一个是选择3.5,Unity最高支持到3.5 然后要选择第二个FrameWork类库 第一个会报错 然后导入Unity dll 我Unity安装在F:\AppLicationWorkSpace\Unity5.6.2\Unity\Editor\Data\Managed 用哪个导入哪个 然后生成 Ok 把生成的DLL放到Unity里就可以使用了 继续写…

ftp与sftp及sftp和scp的区别

FTP VS SFTP FTP是文件传输协议。在网站上&#xff0c;如果你想把文件和人共享&#xff0c;最便捷的方式莫过于把文件上传到FTP服务器上&#xff0c;其他人通过FTP客户端程序来下载所需要的文件。 FTP进行文件传输需要通过端口进行。一般所需端口为&#xff1a; 1. 控制链路—T…

Kong API Gateway部署手册----安装

文章转载&#xff1a;http://www.nxops.cn/post/97.html

Linux系统下面crontab选择默认编译器

crontab修改默认编辑器crontab默认编辑器为nano.修改crontab默认编辑器为vi或者其他的编辑器。法一&#xff1a;export EDITOR"/usr/bin/vim" ; crontab -e法二&#xff1a;&#xff08;一般我用这方法&#xff0c;简单方便&#xff0c;选3&#xff09;执行命令&…

hawq state 报错: the database is down, but Ambari shows all hawq services as being

此问题官方有给出解决方案&#xff1a;https://discuss.pivotal.io/hc/en-us/articles/221826748-Pivotal-HDB-state-indicates-the-database-is-down-but-Ambari-shows-all-Pivotal-HDB-services-as-being-up Environment ProductVersionPivotal HDB (HAWQ)2.x Symptom Piv…

OpenLayer学习之矢量地图

一、首先了解下矢量地图和栅格地图 矢量图使用直线和曲线来描述图形&#xff0c;这些图形的元素是一些点、线、矩形、多边形、圆和弧线等等&#xff0c;矢量地图放大和缩小不会失真&#xff08;图片你要是放大一定程度明显可以看出一个一个小格→栅格地图的缺点&#xff09;。为…

Extra Data after Last Expected Column:hawq建外表load数据报错

背景&#xff1a;使用sqoop import 才oracle抽数据入HDFS后&#xff0c;通过pxf建立hawq外表&#xff0c;查询数据报错 解决思路&#xff1a;1、从报错上看应该是数据源分割后字段数比目标表字段多&#xff0c;且pgadmin3里报错还出现源数据异常的一条记录&#xff0c;去源头o…

上下文信息 RpcContext

上下文中存放的是当前调用过程中所需的环境信息。所有配置信息都将转换为 URL 的参数&#xff0c;参见 schema 配置参考手册 中的对应URL参数一列。 RpcContext 是一个 ThreadLocal 的临时状态记录器&#xff0c;当接收到 RPC 请求&#xff0c;或发起 RPC 请求时&#xff0c;Rp…

new malloc

https://blog.csdn.net/happyxieqiang/article/details/50775847 0. 属性 new/delete是C关键字&#xff0c;需要编译器支持。malloc/free是库函数&#xff0c;需要头文件支持。 1. 参数 使用new操作符申请内存分配时无须指定内存块的大小&#xff0c;编译器会根据类…

pip install scrpy 报错: command 'gcc' failed with exit status 1

报错如下&#xff1a; copying src/twisted/words/xish/xpathparser.g -> build/lib.linux-x86_64-2.7/twisted/words/xish running build_ext building twisted.test.raiser extension creating build/temp.linux-x86_64-2.7 creating build/temp.linux-x86_64-2.7/src cr…

Codeforces 990E Post Lamps 【暴力】【贪心】

虽然只是10^6的数据量&#xff0c;但用cin会tle。一直知道cin常数大&#xff0c;但没想到会是10^2这个级别。 我们枚举每个power的lamp&#xff0c;然后对每个power用平均logn的代价去求它的cost&#xff0c;最后取最小值 对于每个power&#xff0c;我们从左往右地去照亮整个区…

[Luogu 2486] SDOI2011 染色

[Luogu 2486] SDOI2011 染色 树剖水题&#xff0c;线段树维护。 详细题解不写了。 我只想说我写的线段树又变漂亮了qwq #include <algorithm> #include <cstdio> #include <cstring> const int MAXN100010; int n,m; class HLD {private:bool vis[MAXN];int …

完全卸载HDP和Ambari

文章转载自&#xff1a;https://imaidata.github.io/blog/uninstall_hdp_ambari/ 用于个人学习、备查&#xff0c;转载请注明原作者。 简介&#xff1a; 在不需要重装操作系统的情况下完全卸载HDP&#xff0c;并准备好自动安装HDP2.6的环境。 文章&#xff1a; 升级HDP失败…

HBase 配置详解

文章转载自&#xff1a;http://blog.csdn.net/ningxuezhu/article/details/50547970 仅用于个人学习&#xff0c;收藏&#xff0c;作为资料备查&#xff0c;如需转载请注明原作者。 该文档是用hbase默认配置文件生成的&#xff0c;文件源是hbase-default.xml hbase.rootdir …