`
Taoo
  • 浏览: 294551 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

oozie 调用sqoop导入hive表错误处理

 
阅读更多
这个问题,搞了整整三天。
都想骂娘了。
由于是尼玛oozie调用mapreduce调用sqoop然后调用hive,关系比较复杂。
所以错误定位搞了好久。

症状描述:
用oozie调用sqoop,将数据表从mysql直接导入到hive的过程中。
全部过程都能执行完毕,数据也导进去了。
但是,那个oozie的job的结果显示是killed的。当然咯,那个action节点的结果也显示是failed的。




问题定位:

最后问题找到了,应该是sqoop的一个bug。
sqoop的org.apache.sqoop.hive.HiveImport类中,
引用了一个com.cloudera.sqoop.util.ExitSecurityException这个类。
而在HiveImport.java的305行:Throwable cause = ite.getCause();
cause返回的是org.apache.sqoop.util.ExitSecurityException这个类。
所以导致306行if判断返回false,实际上应该返回true。
305            Throwable cause = ite.getCause();
306            if (cause instanceof ExitSecurityException) {
307                ExitSecurityException ese = (ExitSecurityException) cause;
308                int status = ese.getExitStatus();
309                if (status != 0) {
310                    throw new IOException("Hive CliDriver exited with status=" + status);
311                }
312            } else {
313                throw new IOException("Exception thrown in Hive", ite);
314            }




解决方法:
找到HiveImport.java的import部分,
把原来的:com.cloudera.sqoop.util.ExitSecurityException
换成:import org.apache.sqoop.util.ExitSecurityException
即可。

另外,这个修改后的sqoop的jar包,是应该放在workflow执行时指定的hdfs中的lib里的。



使用的版本:
hadoop:1.0.3
oozie:3.1.3
sqoop:1.4.1
hive:0.8.1
分享到:
评论
4 楼 developerinit 2015-08-03  
我用的cdh5.3.2的oozie4.0调度sqoop(从oracle导入hive中),sqoop脚本单独执行毫无问题,但是用oozie调度时是失败的(mr却显示成功)且没有成功导入hive中,请赐教是哪里出了问题,很多方法都试过了,还是不行。。。。
3 楼 blackproof 2015-03-26  
我也用sqoop从mysql导入到hdfs,-query后边怎么写
我这么写,都把空格换成回车了
--query "SELECT merchant_id tagid,GROUP_CONCAT(s
ite_id) taglist FROM gwk_site_filter where \$CONDITIONS GROUP BY merchant_id"
2 楼 hasayake0302 2013-02-05  
hasayake0302 写道
我昨天遇到的问题就是这个。。

昨天问你的
1 楼 hasayake0302 2013-02-05  
我昨天遇到的问题就是这个。。

相关推荐

    oozie-sqoop2

    2. **Sqoop2 API**:oozie-sqoop2通过调用Sqoop2的Java API来创建和执行导入导出任务。这些API允许你指定SQL查询、分块大小、并行度以及其他高级选项,以优化数据迁移性能。 3. **Oozie Action定义**:在Oozie的...

    Oozie调度SparkSQL样例代码_oozie_hive_

    在大数据处理领域,Oozie和Hive是两个重要的组件。Oozie是Apache Hadoop的一个工作流调度系统,用于管理Hadoop作业的生命周期,而Hive则是一种基于Hadoop的数据仓库工具,允许用户使用SQL(称为HQL)对大规模数据...

    sqoop-1.4.2.bin__hadoop-2.0.0-alpha.tar

    7. **分块导入**:对于大型数据集,Sqoop 可以将导入过程划分为多个小任务,每个任务处理一部分数据。这有助于充分利用集群资源,加速数据导入。 8. **数据类型转换**:Sqoop 自动处理 RDBMS 数据类型到 Hadoop 的 ...

    Oozie之JavaAction测试实例

    Oozie支持多种类型的Hadoop任务,包括MapReduce、Pig、Hive、Sqoop等,同时也支持通过Java Action执行自定义的Java程序。 **JavaAction**是Oozie提供的一个特殊功能,允许用户编写Java程序来实现自定义逻辑,这些...

    oozie-branch-4.1.zip

    3. **ShareLib**:Oozie 的共享库,包含了预装的 Hadoop 生态系统动作(如 Hive, Pig, Sqoop 等),使得用户可以直接在工作流中使用这些工具,无需额外配置。 4. **Web UI**:提供了用户界面,方便管理员和用户监控...

    大数据开发指南(实际项目)

    例如,从数据库 `hotcloud` 导入表 `tmainarea`。 - **创建分区表**:为了提高查询效率,可以创建分区表。例如,按天对热源数据进行分区。 - **新增分区并导入数据**:在导入数据之前,需要先创建分区元数据,并建立...

    subwf_fork.zip

    在大数据处理领域,Apache Oozie 是一个非常重要的工作流管理系统,它被广泛用于协调 Hadoop 生态系统中的各种任务,如 MapReduce、Pig、Hive、Sqoop 等。"subwf_fork.zip" 文件是针对 Oozie 的特定工作流设计,包含...

    Hadoop概述&集群搭建.md

    - **数据交换和工作流管理系统**:如Chukwa、Flume、Sqoop(数据导入导出工具)以及Oozie(工作流调度器)等。 #### 三、环境准备 为了搭建Hadoop集群,需要先准备好必要的软件环境。 - **安装虚拟机软件**:...

    Hadoop在雅虎的应用

    - **Hive:**一种数据仓库基础设施,用于查询和管理大规模数据集。 - **Pig:**用于数据分析的高级语言。 - **Oozie:**用于工作流调度的任务协调服务。 - **Zookeeper:**分布式应用协调服务。 - **Mahout:**支持...

    李建伟:Hadoop新技术介绍

    - Avro:是一个数据序列化系统,它提供了丰富的数据结构类型、快速的压缩以及远程过程调用(RPC)功能。 - Hive:是一个数据仓库基础架构,用于提供数据摘要、查询和分析。 - Pig:是一个高级数据流语言和执行框架...

    hadoop-eco

    7. **Oozie** - 工作流调度系统,用于管理Hadoop作业,包括Hadoop MapReduce、Pig、Hive和Sqoop等。 8. **ZooKeeper** - 高可用性协调服务,用于分布式应用程序,管理配置信息、命名、提供分布式同步和组服务。 9....

    Hadoop单节点部署指导

    - **Hive**:构建在Hadoop之上的数据仓库工具,支持通过SQL-like查询语言(HiveQL)进行数据检索。 - **HBase**:基于Hadoop的分布式、面向列的存储系统,类似于Google BigTable。 - **Pig**:为Hadoop提供了一种更...

Global site tag (gtag.js) - Google Analytics