Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sqoop导出工具到Oracle空指针异常_Oracle_Hadoop_Hive_Sqoop - Fatal编程技术网

Sqoop导出工具到Oracle空指针异常

Sqoop导出工具到Oracle空指针异常,oracle,hadoop,hive,sqoop,Oracle,Hadoop,Hive,Sqoop,使用如下命令: sqoop export \ --connect jdbc:oracle:thin:'@somehostname.com:1521/prod1_adhoc' \ --username fbaggins \ --P \ --table MIDDLEEARTH \ --hcatalog-database MORDOR \ --hcatalog-table MORDOR \ --columns IS_DWARF,IS_ELF \ --verbose 导致此错误的原因: 16/08/2

使用如下命令:

sqoop export \
--connect jdbc:oracle:thin:'@somehostname.com:1521/prod1_adhoc' \
--username fbaggins \
--P \
--table MIDDLEEARTH \
--hcatalog-database MORDOR \
--hcatalog-table MORDOR \
--columns IS_DWARF,IS_ELF \
--verbose
导致此错误的原因:

16/08/25 10:08:31 INFO hive.metastore: Trying to connect to metastore with URI thrift://somehostname.com:1521
16/08/25 10:08:31 INFO hive.metastore: Connected to metastore.
16/08/25 10:08:31 DEBUG util.ClassLoaderStack: Restoring classloader: sun.misc.Launcher$AppClassLoader@56aac163
16/08/25 10:08:31 ERROR tool.ExportTool: Encountered IOException running export job: java.io.IOException: java.lang.NullPointerException
16/08/25 10:08:31 DEBUG manager.OracleManager$ConnCache: Caching released connection for jdbc:oracle:thin:@somehostname.com:1521/prod1_adhoc/fbaggins
不确定null来自何处,因为配置单元表中没有null

供参考,来自hive:

hive> describe MORDOR;
OK
IS_DWARF bigint                                      
IS_ELF   string
来自Oracle:

describe MORDOR
Name                    Null Type        
----------------------- ---- ----------- 
IS_DWARF                     NUMBER(12)  
IS_ELF                       VARCHAR2(3) 

再看看日志:你没看到任何荒谬的东西吗

正在尝试使用URI thrift://$HOSTNAME:$PORT连接到元存储 缓存jdbc:oracle:thin:@$HOST:$PORT/$ALIAS/$SCHEMA的已发布连接

血腥的环境变量(或外壳变量)尚未由外壳解析。虽然我不确定MetastoreURI发生了什么(它是在Hadoop conf文件中定义的,没有shell/env变量…)

这是因为您将它们括在单引号中
--连接jdbc:oracle:thin:'@$HOST:$PORT/$ALIAS'

因此,您有一个三步解决方案:

  • 每当希望shell解析内部变量时,请使用双引号
  • 学习脚本shell
  • 了解指针、空指针,以及当一些错误代码无法检查对象变量是否已正确初始化(即Java中的
    NullPointerException
    )时会发生什么情况

  • 魔多是蜂巢视图而不是桌子吗

    当为sqoop指定的对象--table是视图时,我会遇到完全相同的问题。descripe命令只打印该视图的列,因此它不会显示该视图是否为视图。您可以运行
    SHOW CREATE TABLE MORDOR
    来确认这是一个视图或表(“SHOW CREATETABLE”也适用于视图,因为没有像“
    SHOW CREATE view
    ”这样的单独命令


    SQOOP文档明确声明支持从视图导入SQOOP,但视图的SQOOP导出上的SQOOP文档是静默的-未说明是否支持-可能是SQOOP或HMS错误。Sqoop可能不喜欢HMS为视图返回的内容。因此不排除它可能是一个HMS错误。

    “NullPointerException…不确定null来自何处,因为Hive表中没有null”-您的幽默感让我想起了Monty Python(或者更合适的是Monty Java)Samson,我特意加入变量,以保护在公共论坛中共享敏感数据。我向您保证,这些空间中的内容是一个实际值(例如。thrift://db21.mydomain.com:1521,和所有其他空间一样)。甚至我也面临类似的问题。我在Sqoop导出作业中使用配置单元视图。你的变通方法是什么?您是否创建了配置单元表?在我的例子中,我在配置单元hbase表上创建了配置单元视图,因为我们有Struct数据类型。如有任何建议,将不胜感激。谢谢。我们必须从表导出,而不是从视图导出。我不知道有什么解决办法。