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

sqoop使用以及常见问题 1、hdfs文件的权限问题 问题分析与解决: 根据报错信息是hdfs文件的权限问题,命令进入集群执行的用户为null,而hdfs文件所有者为hdfs。 要么以用户hdfs执行命令,要么调整hdfs文件的权限,因为我只是使用hdfs文件的其中之一,暂时考虑:以hdfs用户执行命令。 在~/.bash_profile文件增加: export HADOOP_USER_NAME=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了。



文档还待完善。


通过Sqoop将Oracle中表导入到HDFS时报错Error during import: No primary key could be found 我的Sqoop版本是1.4.6,在利用Sqoop将Oracle数据导入到HDFS时候回出现一些异常,因此我们我们要注意以下几点:       sqoop import --connect jdbc:oracle:thin:@192.168.8.110:1521:orcl --table TRANS_GJJY02 --username sky --password 123456 -m 8 --ta 阅读详情

相关推荐

利用sqoop从mysql向多分区hive表中导入数据

客户有需要需要把数据从传统数据库想hadoop平台迁移,他们利用sqoop

数据世界的专栏 1万+

tuxedo 错误码1200-1299

WSNAT Messages 1200-12991200 INFO: .SysClientState: User usrname on LMID state change to stateDescriptionThis message indicates that the client specified above changed to a new state. A complete listi...

迷途小书童 1783

Sqoop安装配置与实战:从MySQL到Hadoop的高效数据迁移指南

在构建数据仓库和数据湖的ETL(抽取、转换、加载)流程中,关系型数据库与Hadoop生态间的批量数据传输是一个基础且高频的需求。其核心原理在于通过并行化框架(如MapReduce)实现数据的高效搬运,将复杂的连接、分页、异常处理等底层操作封装为简洁的命令行接口。这项技术的核心价值在于显著提升数据同步的稳定性和开发效率,避免重复造轮子。它广泛应用于数据仓库初始化、数据湖构建、以及日常的增量数据同步等场景。本文聚焦于Apache Sqoop这一经典工具,通过详解其安装配置、连接MySQL数据库、并行导入到HDF

weixin_34234829的博客 349

sqoop java实例,Java SqoopOptions.setNumMappers方法代码示例

import com.cloudera.sqoop.SqoopOptions; //导入方法依赖的package包/类@Override/** {@inheritDoc} */public void applyOptions(CommandLine in, SqoopOptions out)throws InvalidOptionsException {try {applyCommonOption...

weixin_39653733的博客 246

pentaho-hadoop-shims:Hadoop配置

五角叉垫片 Hadoop配置(也称为垫片和Pentaho大数据自适应层)是与特定版本的Hadoop(以及相关工具:Hive,HBase,Sqoop,Pig等)进行通信所需的Hadoop库的集合。 它们被设计为易于配置。 如何建造 pentaho-hadoop-shims使用maven框架。 构建项目的先决条件: Maven,版本3+ Java JDK 1.8 /.m2目录中的这个 建立它 这是一个maven项目,要使用以下命令进行构建 $ mvn clean install (可选)您可以指定-Drelease以触发混淆和/或丑化(根据需要) (可选)您可以指定-Dmaven.test.skip = true跳过测试(即使您不应该知道) 构建结果将是位于target的Pentaho软件包。 运行测试 单元测试 这将运行项目(和子模块)中的所有单元测试。 要同时运行集成测试,请参阅

U型槽微带贴片天线:从理论公式到带宽扩展实战

本文深入探讨了U型槽微带贴片天线的设计与带宽扩展实战。针对传统微带天线带宽窄的痛点,详细解析了通过引入U型槽形成双谐振点以拓宽带宽的原理,并提供了从MATLAB理论计算、ANSYS HFSS仿真建模到参数优化的一站式工程指南。文章还分享了多种带宽扩展组合技巧及仿真与实测避坑经验,助力射频工程师设计出高性能的宽带微带天线。

weixin_29168153的博客 450

sqoop导入hdfs

导入表的所有字段sqoop import --connect jdbc:oracle:thin:@192.168.1.100:1521:ORCL \ --username SCOTT --password tiger \ --table EMP -m 1; 查看执行结果:hadoop fs -cat /user/hadoop/EMP/part-m-000007369,SMITH,CLERK,790...

kuodannie1668的博客 1407

南京邮电大学《数学实验》模块二(函数的迭代)参考答案

【代码】南京邮电大学《数学实验》模块二(函数的迭代)参考答案。

qq_1293730064的博客 3万+

sqoop 导入hdfs hive hbase

目录 参数解析 导入HDFS 导入Hive 导入Hbase Hive增量导入 Hbase增量导入 任务job 参数解析 官网参数解析:http://sqoop.apache.org/docs/1.4.7/SqoopUserGuide.html#_incremental_imports --password-file :密码文件在hdfs上的路劲。如果密码不能明...

qq_37706484的博客 915

从CAD图纸到GIS地图:手把手教你用Global Mapper处理DWG文件(含坐标配准)

本文详细介绍了如何使用Global Mapper将CAD图纸(DWG文件)转换为GIS地图,包括坐标配准、图层与属性转换等关键步骤。通过四参数变换和控制点匹配技术,确保数据精准转换,适用于测绘、城市规划等领域。文章还提供了高级处理技巧和质量控制流程,帮助用户高效完成GIS化工作。

weixin_29196891的博客 523

Isograph Reliability Workbench 14实战:从零构建故障树分析模型

本文以“马达不转”为例,手把手教你使用Isograph Reliability Workbench 14从零构建故障树分析模型。内容涵盖创建工程、定义顶事件、添加逻辑门与基础事件等核心步骤,并介绍了模型检查与定性定量分析,帮助你系统掌握这一强大的可靠性工程工具。

weixin_29309213的博客 365

sqoop安装及其使用

文章目录sqoop简介sqoop安装sqoop使用把MySQL中的数据导入到HDFS上将MySQL上的数据导出到数据库中记些bug sqoop简介 sqoop是连接关系型数据库和hadoop的桥梁,主要有两个方面(导入和导出): 将关系型数据库的数据导入到Hadoop 及其相关的系统中,如 Hive和HBase 将数据从Hadoop 系统里抽取并导出到关系型数据库 sqoop安装 sqoop下载地址:Index of /dist/sqoop 下载完成后把sqoop进行解压安装并配置,在添加sqo

阿坨的博客 381

商用车重型多挡位机械式变速器(AMT)结构设计与仿真分析

本文针对商用车重型AMT变速器开展结构设计与仿真分析。设计采用12挡双中间轴结构,匹配400kW柴油发动机,最大扭矩2000Nm。通过等比级数分配传动比(头挡14.5,最高挡0.78),采用主副箱组合实现多挡位。双中间轴结构可抵消径向力,提升承载能力。关键设计包括:235mm中心距、4.5-5.0mm齿轮模数、锁环式同步器和复合润滑系统。通过Python参数化建模进行强度校核,计算显示中间轴在2000Nm工况下等效应力满足安全系数要求(屈服强度850MPa,安全系数≥2)。该设计解决了传统MT变速器操作强度

AI的内部世界的博客 115

sqoop使用例子

简介: sqoop是工具,一个可以把ORACLE、MYSQL中的数据导入到HDFS、HIVE、HBASE中(反过来也可以)的工具。下面是一些使用的例子。留下做个参考: #从Mysql中抽取数据到HDFS.问题:文件太多,全他妈是小文件;目标目录如果已经存在会报错 sqoop import --connect jdbc:mysql://10.10.244.137/test --username

lovemelovemycode的专栏 2233

Host是如何与EC通信的

EC中有三个寄存器,分别为状态寄存器EC_SC、命令寄存器EC_SC和数据寄存器EC_DATA。而状态寄存器和命令寄存器同属于一个寄存器,这几个寄存器遵循着ACPI EC规范。host可以根据ACPI协议规范来与EC进行通信。 以下是个寄存器的详细介绍。 EC状态寄存器(EC_SC(R)),该寄存器是一个只读寄存器,它反映了此时EC接口的状态。下图为该寄存器表。 EC状态寄存器表中各位的具体含义: OBF(Output Buffer is Full),该状态位置1...

qq_30135687的博客 3698

关节电机技术全解析:原理、双编码器、控制方法与硬件选型

关于关机电机的组成,技术原理,特点以及选型等方面的详细介绍,可以帮助快速学习关节电机相关内容!

start_up_go的博客 697

SQOOP常用命令

bin/sqoop list-databases –connect jdbc:mysql://master:3306 –username root –password 123456 //测试MYSQL bin/sqoop import –connect jdbc:mysql://master:3306/test –username root –passwor...

wanghenghengheng的博客 306

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

关于sqoop 的一些问题

背景说明: 最近做一个数据迁移的项目,遇到一个需求就是: 把关系型数据库的数据迁移到hdfs 上并且用hive表管理。本来是一个比较简单的需求,直接sqoop脚本 或者用阿里的datax。 但是要命的是,该需求要求可视化操作,也就是说,不能用跑脚本的形式。这个难不倒我,不就是调用api嘛,我再给你加一个web 就可以搞定,谁知道是噩梦的开始搞了一个星期终于搞定。先总结如下: 首先我们知道 sqoop 将数据导入hive 是分两步走 1 先自己生成一个map 之类的类,自己编译 ,将数据导入hdfs ,此时如

weixin_41660300的博客 374

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

sqoop 安装及使用

文章目录 #sqoop学习笔记 sqoop官方用户手册:http://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html 简介: sqoop是工具,一个可以把ORACLE、MYSQL中的数据导入到HDFS、HIVE、HBASE中(反过来也可以)的工具。下面是一些使用的例子。 ##sqoop导入导出 #从Mysql中抽取数据到HDFS sqoop impo...

安静的码农 239

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

大数据学习21:sqoop 语法和常用命令和小案例

1.1.0 sqoop 语法和常用命令 2.1.0 sqoop 典型用法 3.1.0 sqoop 的一个小案例 4.1.0 sqoop 的分区表导入导出======================================= 1.1.0 sqoop 语法和常用命令 hive导入参数   --hive-home 重写$HIVE_HOME   --hive-import

ggwxk1990的博客 1193

sqoop学习笔记

sqoop学习笔记 sqoop导入导出 sqoop on hive sqoop on hbasesqoop学习笔记sqoop官方用户手册:http://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html 简介: sqoop是工具,一个可以把ORACLE、MYSQL中的数据导入到HDFS、HIVE、HBASE中(反过来也可以)的工具。下面是一些使用的例子s

安静的码农 1011

高原电力机车与单线铁路:从牵引计算到运行图设计

铁路运输组织中,牵引计算与通过能力是决定线路运能的核心技术。高原环境因气压低、温差大、坡道陡,对电力机车的散热、绝缘、粘着和制动系统提出严苛要求,而单线铁路的会让站与运行图周期更直接制约列车开行对数。理解机车牵引力与坡道阻力的平衡,掌握欧拉法模拟列车运行时分,再结合单线区间通过能力公式,即可从数据层面评估一条高原线路能开行多少列车。Python提供轻量建模手段,可辅助完成牵引仿真、运行图铺画与能力检算,为高原铁路规划提供工程参考。本文以喀兰—鲁斯芙娅单线为背景,串联高原机车选型、单线运输组织与列车运行模拟,

weixin_34054866的博客 485
上一篇: 云监控 Ganglia 安装步骤 (含python module)
下一篇: Spark集群,多个版本Python/Python Package管理
Ronney-Hua
博客等级 码龄10年 48粉丝 74原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值