lunch-tdch-to-load将数据从hive-parquet表加载到teradata

vktxenjb  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(370)

我需要使用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
有人知道为什么会这样吗?

omjgkv6w

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

希望这有帮助。

相关问题