我需要使用TDCH(Teradata连接器用于Hadoop)从Hive表中加载数据,这些数据存储为镶木地板文件到Teradata数据库。我使用TDCH 1.5.3和CDH 5.8.3。和Hive 1.1.0
我尝试启动TDCH usign hadoop jar命令并获取错误:
抛出java.lang.ClassNotFoundException: org.apache.parquet.hadoop.util.ContextUtil
有人知道它为什么会发生吗?
答案 0 :(得分:0)
在查看您的问题时,您可能无法将所有Hive Libraries上传到Teradata。
以下是可用于从Hive导出到TD的脚本示例。
#!/bin/bash
## Declare Hive Source and Teradata Target
Source_Database="???"
Source_Table="???"
Target_Database="???"
Target_Table="???"
JDBC="???"
## Format
Format="???"
## Declare User used to Connect and Load Data
MYUSER="???"
MYPASSWORD="???"
## Display configuration libraries.
echo $USERLIBTDCH
echo $LIB_JARS
## Define the connection option
hadoop jar $USERLIBTDCH \
com.teradata.connector.common.tool.ConnectorExportTool \
-libjars $LIB_JARS \
-url jdbc:teradata://$JDBC/logmech=ldap,database=$Target_Database,charset=UTF16 \
-username $MYUSER \
-password $MYPASSWORD \
-jobtype hive \
-fileformat $Format \
-sourcedatabase $Source_Database \
-sourcetable $Source_Table \
-targettable $Target_Table \
-method internal.fastload \
-nummappers 1`
在使用此脚本之前,您需要检查是否已配置放入hadoop jar的库。这意味着通过调用(使用变量名称)
来设置所有Path变量,如下所示echo $USERLIBTDCH
PATH变量的预期输出(这是它在Cloudera Enviroment中的样子)
/opt/cloudera/parcels/CDH/lib/avro/avro.jar,
/opt/cloudera/parcels/CDH/lib/avro/avro-mapred-hadoop2.jar,
/opt/cloudera/parcels/CDH/lib/hive/conf,
/opt/cloudera/parcels/CDH/lib/hive/lib/antlr-runtime-3.4.jar,
/opt/cloudera/parcels/CDH/lib/hive/lib/commons-dbcp-1.4.jar,
/opt/cloudera/parcels/CDH/lib/hive/lib/commons-pool-1.5.4.jar,
/opt/cloudera/parcels/CDH/lib/hive/lib/datanucleus-api-jdo-3.2.6.jar,
/opt/cloudera/parcels/CDH/lib/hive/lib/datanucleus-core-3.2.10.jar,
/opt/cloudera/parcels/CDH/lib/hive/lib/datanucleus-rdbms-3.2.9.jar,
/opt/cloudera/parcels/CDH/lib/hive/lib/hive-cli.jar,
/opt/cloudera/parcels/CDH/lib/hive/lib/hive-exec.jar,
/opt/cloudera/parcels/CDH/lib/hive/lib/hive-jdbc.jar,
/opt/cloudera/parcels/CDH/lib/hive/lib/hive-metastore.jar,
/opt/cloudera/parcels/CDH/lib/hive/lib/jdo-api-3.0.1.jar,
/opt/cloudera/parcels/CDH/lib/hive/lib/libfb303-0.9.2.jar,
/opt/cloudera/parcels/CDH/lib/hive/lib/libthrift-0.9.2.jar,
/opt/cloudera/parcels/CDH/lib/hive-hcatalog/share/hcatalog/hive-hcatalog-core.jar,
/opt/jars/parquet-hadoop-bundle.jar
我可能希望路径变量没有正确设置。为此,您可以使用以下命令。创建所有必要的路径。
PATH=$PATH:~/opt/bin
PATH=~/opt/bin:$PATH
如果查看Teradata Connector文档,则需要指定以下库。
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
希望这有帮助。