teradata 从 hive 导出到 teradata class 未找到
teradata export from hive to teradata class not found
我正在尝试使用 TDCH 连接器从配置单元 table 导出到 teradata,但出现以下错误:-
15/05/07 08:01:03 INFO tool.ConnectorExportTool: java.lang.NoClassDefFoundError: org/apache/hadoop/hive/metastore/api/MetaException
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:190)
at com.teradata.connector.common.tool.ConnectorJobRunner.runJob(ConnectorJobRunner.java:81)
at com.teradata.connector.common.tool.ConnectorExportTool.run(ConnectorExportTool.java:61)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84)
at com.teradata.hadoop.tool.TeradataExportTool.main(TeradataExportTool.java:24)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hive.metastore.api.MetaException
at java.net.URLClassLoader.run(URLClassLoader.java:366)
at java.net.URLClassLoader.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 13 more
我从错误中了解到缺少 hive-metastore jar。但它已经存在于 hive/lib 文件夹
中
hive-metastore.jar -> hive-metastore-0.9.0.jar
已存在于路径中:/usr/hdp/2.2.4.2-2/hive/lib
问题是 org/apache/hadoop/hive/metastore/api/MetaException
class 对 java runtime
不可用。你能确保 Jar 在有效 runtime classpath
下吗?
很少有尝试可以尝试通过 -cp 将 class 路径显式传递给 jvm,或者您可以尝试将 jar 放在启动目录中以确保其存在。
您必须定义环境变量 LIB_JARS 和 HADOOP_CLASSPATH。
您可以使用带有参数 -libjars
的环境变量 LIB_JARS
根据 README,以下 jar 是必需的:
Hive Job(version 0.11.0 as example):
a) hive-metastore-0.11.0.jar
b) hive-exec-0.11.0.jar
c) hive-cli-0.11.0.jar
d) libthrift-0.9.0.jar
e) libfb303-0.9.0.jar
f) jdo2-api-2.3-ec.jar
g) slf4j-api-1.6.1.jar
h) datanucleus-core-3.0.9.jar
i) datanucleus-rdbms-3.0.8.jar
j) commons-dbcp-1.4.jar
k) commons-pool-1.5.4.jar
l) antlr-runtime-3.4.jar
m) datanucleus-api-jdo-3.0.7.jar
HCatalog Job:
a) above Hive required jar files
b) hcatalog-core-0.11.0.jar
有时您的 "lib" 文件夹中可能包含所有 jar 文件,但由于某些原因 Oozie 可能不会阅读它,仅仅是因为您的 job.properties 或 [=26= 中有错字].仔细检查您的属性文件。
"job.properties" 文件应如下所示 -
oozie.use.system.libpath=true
oozie.wf.application.path=${nameNode}/apps/myapp/workflow/
"coordinator.properties" 文件应如下所示 -
oozie.use.system.libpath=true
oozie.coord.application.path=${nameNode}/apps/myapp/workflow/
你的 "lib" 文件夹应该在 -
/apps/myapp/workflow/lib
我正在尝试使用 TDCH 连接器从配置单元 table 导出到 teradata,但出现以下错误:-
15/05/07 08:01:03 INFO tool.ConnectorExportTool: java.lang.NoClassDefFoundError: org/apache/hadoop/hive/metastore/api/MetaException
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:190)
at com.teradata.connector.common.tool.ConnectorJobRunner.runJob(ConnectorJobRunner.java:81)
at com.teradata.connector.common.tool.ConnectorExportTool.run(ConnectorExportTool.java:61)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84)
at com.teradata.hadoop.tool.TeradataExportTool.main(TeradataExportTool.java:24)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hive.metastore.api.MetaException
at java.net.URLClassLoader.run(URLClassLoader.java:366)
at java.net.URLClassLoader.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 13 more
我从错误中了解到缺少 hive-metastore jar。但它已经存在于 hive/lib 文件夹
中 hive-metastore.jar -> hive-metastore-0.9.0.jar
已存在于路径中:/usr/hdp/2.2.4.2-2/hive/lib
问题是 org/apache/hadoop/hive/metastore/api/MetaException
class 对 java runtime
不可用。你能确保 Jar 在有效 runtime classpath
下吗?
很少有尝试可以尝试通过 -cp 将 class 路径显式传递给 jvm,或者您可以尝试将 jar 放在启动目录中以确保其存在。
您必须定义环境变量 LIB_JARS 和 HADOOP_CLASSPATH。 您可以使用带有参数 -libjars
的环境变量 LIB_JARS根据 README,以下 jar 是必需的:
Hive Job(version 0.11.0 as example):
a) hive-metastore-0.11.0.jar
b) hive-exec-0.11.0.jar
c) hive-cli-0.11.0.jar
d) libthrift-0.9.0.jar
e) libfb303-0.9.0.jar
f) jdo2-api-2.3-ec.jar
g) slf4j-api-1.6.1.jar
h) datanucleus-core-3.0.9.jar
i) datanucleus-rdbms-3.0.8.jar
j) commons-dbcp-1.4.jar
k) commons-pool-1.5.4.jar
l) antlr-runtime-3.4.jar
m) datanucleus-api-jdo-3.0.7.jar
HCatalog Job:
a) above Hive required jar files
b) hcatalog-core-0.11.0.jar
有时您的 "lib" 文件夹中可能包含所有 jar 文件,但由于某些原因 Oozie 可能不会阅读它,仅仅是因为您的 job.properties 或 [=26= 中有错字].仔细检查您的属性文件。
"job.properties" 文件应如下所示 -
oozie.use.system.libpath=true
oozie.wf.application.path=${nameNode}/apps/myapp/workflow/
"coordinator.properties" 文件应如下所示 -
oozie.use.system.libpath=true
oozie.coord.application.path=${nameNode}/apps/myapp/workflow/
你的 "lib" 文件夹应该在 -
/apps/myapp/workflow/lib