sqoop exporttool到oracle nullpointer异常

11dmarpk  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(460)

使用如下命令:

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

不确定空值来自何处,因为配置单元表中没有空值。
供参考,来自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)
plupiseo

plupiseo1#

魔多是一个Hive视图而不是一张table吗?
当一个为sqoop指定的对象--table是一个视图时,我遇到了完全相同的问题。descripe命令只打印该视图的列,所以它不显示它是否是视图。你可以跑 SHOW CREATE TABLE MORDOR 要确认这是一个视图或表(“show create table”也适用于视图,因为没有像 show create view ").
sqoop文档明确声明支持从视图导入sqoop,但是视图的sqoop导出上的sqoop文档是静默的—没有说明是否支持它—可能是sqoop或hms错误。sqoop可能不喜欢hms返回的视图。所以不排除可能是hms的错误。

goqiplq2

goqiplq22#

再看看日志:你没看到什么荒谬的东西吗?
正在尝试连接到uri为thrift://$hostname:$port的metastore缓存已释放连接jdbc:oracle:thin:@$host:$port/$alias/$schema
对。shell尚未解析环境变量(或shell变量)。尽管我不确定metastoreuri发生了什么(它是在hadoop conf文件中定义的,没有shell/env变量…)
那是因为你把它们用单引号括起来了。 --connect jdbc:oracle:thin:'@$HOST:$PORT/$ALIAS' 所以你有一个三步解决方案:
只要希望shell解析其中的变量,就使用双引号
学习脚本shell
了解指针、空指针,以及当一些错误代码无法检查对象变量是否已正确初始化(即。 NullPointerException (java语言)

相关问题