【问题标题】:How to use a newer version of parquet jar on AWS EMR如何在 AWS EMR 上使用更新版本的 parquet jar
【发布时间】:2015-11-16 19:33:02
【问题描述】:

最新的 EMR 4.1.0 捆绑包包含 Hive 1.0.0 和 Spark 1.5.0,Hive 1.0.0 使用 parquet-hadoop-bundle-1.5.0.jar 而 Spark 使用 parquet-hadoop-1.7.0.jar

不幸的是parquet 1.5.0版本无法读取parquet 1.7.0生成的文件。

我尝试在 Hive shell 中使用 add jar parquet-hive-bundle-1.7.0.jar 但没有成功,Hive 仍然使用捆绑的旧 Parquet jar。

然后我尝试用较新的 jar 替换旧 jar,但是即使使用命令 sudo find / "*parquet*.jar",我也找不到任何与 parquet 相关的 jar。

但是我将parquet-hive-bundle-1.7.0.jar 复制到/usr/lib/hive/lib 但它不起作用,Hive 仍然使用旧的 parquet jar 并且无法读取我的 parquet 文件。通常这种方式适用于 Cloudera 发行版。

所以我的问题是,镶木地板罐子在哪里,如何用更新的版本替换它?

【问题讨论】:

  • Hive 1.0.0 无法读取 Spark 生成的镶木地板面临同样的问题。你找到解决办法了吗?
  • 两种解决方案:1.等待EMR团队将Hive升级到1.0.1; 2. 使用 Cloudera CDH 设置另一个 Hive 集群,在此解决方案中,我使用 EMR 集群运行 Spark 作业并使用 Cloudera Hive 集群运行 SQL 查询
  • 感谢您的回复。 Spark 附带的 thriftserver 怎么样?它基于更新版本的 hive。你试过了吗?
  • 这是第三种方案,我还没试过,你可以试一试

标签: amazon-web-services hive emr


【解决方案1】:

我通过将新的 parquet jar 位置添加到 environment 或 .profile 或 .bashrc 文件中的环境变量“HADOOP_CLASSPATH”来解决了这个问题

导出 HADOOP_CLASSPATH=/var/lib/hive/parquet-hadoop-bundle-1.9.0.jar:$HADOOP_CLASSPATH

运行以下命令获取 hive 命令位置

which hive

在 /usr/bin/(你的 hive 位置)下打开 'hive' 文件

vi /usr/bin/hive

您应该会看到类似下面的内容。

备份 hive 文件并在 exec 之前的末尾为 HADOOP_CLASSPATH 添加一个 echo 命令,如下所示。

蜂巢

#!/bin/bash

if [ -d "/usr/hdp/2.5.0.0-1245/atlas/hook/hive" ]; then
 if [ -z "${HADOOP_CLASSPATH}" ]; then
  export HADOOP_CLASSPATH=/usr/hdp/2.5.0.0-1245/atlas/hook/hive/*
 else
  export HADOOP_CLASSPATH=${HADOOP_CLASSPATH}:/usr/hdp/2.5.0.0-1245/atlas/hook/hive/*
 fi
fi

...

if [ -z "${HADOOP_CLASSPATH}" ]; then
 export HADOOP_CLASSPATH=${HCATALOG_JAR_PATH}
else
 export HADOOP_CLASSPATH=${HADOOP_CLASSPATH}:${HCATALOG_JAR_PATH}
fi

回显“Classpath=$HADOOP_CLASSPATH”

exec "${HIVE_HOME}/bin/hive.distro" "$@"

运行 hive 命令以显示类路径。

一旦我们获得了实际的类路径,我们就知道在哪里添加新的 jar 文件以优先于旧的 parquet jar。

在这种情况下,如果我们设置 HADOOP_CLASSPATH,hive 的类路径将以 HADOOP_CLASSPATH 中的值作为前缀。

所以用新的 parquet jar 添加 HADOOP_CLASSPATH 值解决了这个问题。

我不知道这是否是一个正确的修复,但它的工作原理。

【讨论】:

    猜你喜欢
    • 2020-09-03
    • 1970-01-01
    • 2018-04-15
    • 1970-01-01
    • 2018-06-29
    • 1970-01-01
    • 2016-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多