【问题标题】:Lunch TDCH to Load to load data from Hive parquet table to Teradata午餐 TDCH 要加载以将数据从 Hive parquet 表加载到 Teradata
【发布时间】:2018-06-21 23:02:03
【问题描述】:

我需要使用 TDCH(Teradata Hadoop 连接器)将存储为 parquet 文件的 Hive 表中的数据加载到 Teradata 数据库。我使用 TDCH 1.5.3 和 CDH 5.8.3。和 Hive 1.1.0

我尝试启动 TDCH ussign hadoop jar 命令并得到错误:

java.lang.ClassNotFoundException: org.apache.parquet.hadoop.util.ContextUtil

有人知道为什么会这样吗?

【问题讨论】:

    标签: hadoop hive teradata


    【解决方案1】:

    在查看您的问题时,您可能没有能够上传到 Teradata 所需的所有 Hive 库。

    这是一个可用于从 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 环境中的样子)

    /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 连接器文档,您需要指定以下库。

      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
    

    希望这会有所帮助。

    【讨论】:

    • 谢谢,但我仍然遇到同样的错误。我认为 TDCH 和 CDH 的版本有些问题,看起来不兼容
    猜你喜欢
    • 2015-03-20
    • 2018-02-19
    • 2014-03-30
    • 2019-01-31
    • 2018-08-27
    • 2018-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多