午餐TDCH加载以将数据从Hive镶木地板加载到Teradata

时间:2018-01-12 13:11:41

标签: hadoop hive teradata

我需要使用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

有人知道它为什么会发生吗?

1 个答案:

答案 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

希望这有帮助。