我需要使用tdch(teradata connector for hadoop)将作为Parquet文件存储的配置单元表中的数据加载到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有人知道为什么会这样吗?
omjgkv6w1#
当看到您的问题时,您可能没有能够上载到teradata所需的所有配置单元库。下面是一个可用于从配置单元导出到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`
在使用此脚本之前,需要检查放入hadoopjar的库是否已配置。这意味着通过调用(使用变量名)设置所有路径变量,如下所示
echo $USERLIBTDCH
path变量的预期输出(这是cloudera环境中的样子)
/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=$PATH:~/opt/bin PATH=~/opt/bin:$PATH
如果查看teradata连接器文档,则需要指定以下库。
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
希望这有帮助。
1条答案
按热度按时间omjgkv6w1#
当看到您的问题时,您可能没有能够上载到teradata所需的所有配置单元库。
下面是一个可用于从配置单元导出到td的脚本示例。
在使用此脚本之前,需要检查放入hadoopjar的库是否已配置。这意味着通过调用(使用变量名)设置所有路径变量,如下所示
path变量的预期输出(这是cloudera环境中的样子)
我可能认为path变量没有正确设置。为此,您可以使用以下命令。创建所有必要的路径。
如果查看teradata连接器文档,则需要指定以下库。
希望这有帮助。