【问题标题】:Python compatibility issue while running Apache Phoenix command运行 Apache Phoenix 命令时出现 Python 兼容性问题
【发布时间】:2020-11-26 06:12:35
【问题描述】:

我成功安装了 Hadoop、Pig、Hive、HBase 和 Zookeeper。 我安装了 Apache Phoenix 来访问 HBase。以下是我的 PATH 变量。

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH="$PATH:$JAVA_HOME/bin"
export PATH="/home/vijee/anaconda3/bin:$PATH"

export HADOOP_HOME=/home/vijee/hadoop-2.7.7
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH="$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin"
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"

export ZOOKEEPER_HOME=/home/vijee/apache-zookeeper-3.6.2-bin
export PATH=$PATH:$ZOOKEEPER_HOME/bin

export HBASE_HOME=/home/vijee/hbase-1.4.13-bin
export PATH=$PATH:$HBASE_HOME/bin

export PHOENIX_HOME=/home/vijee/apache-phoenix-4.15.0-HBase-1.4-bin
export PATH=$PATH:$PHOENIX_HOME/bin

我将phoenix-4.15.0-HBase-1.4-client.jar、phoenix-4.15.0-HBase-1.4-server.jar、phoenix-core-4.15.0-HBase-1.4.jar复制到HBase lib目录并重新启动 Hbase 和 Zookeeper。 当我运行下面的 Phoenix 命令时,它会抛出错误

(base) vijee@vijee-Lenovo-IdeaPad-S510p:~/apache-phoenix-4.15.0-HBase-1.4-bin/bin$ psql.py localhost $PHOENIX_HOME/examples/WEB_STAT.sql $PHOENIX_HOME/examples/WEB_STAT.csv $PHOENIX_HOME/examples/WEB_STAT_QUERIES.sql
Traceback (most recent call last):
  File "/home/vijee/apache-phoenix-4.15.0-HBase-1.4-bin/bin/psql.py", line 57, in <module>
    if hbase_env.has_key('JAVA_HOME'):
AttributeError: 'dict' object has no attribute 'has_key'

我的 Python 版本

$ python --version
Python 3.8.3

我知道这是 Python 兼容性问题,psql.py 是为 Python 2.x 编写的。

如何解决这个问题?

【问题讨论】:

    标签: python hbase phoenix


    【解决方案1】:

    简单搜索一下,HBase-1.4 好像是 2017 年的,而最新的 stable 是 2.2.5 .. 发行说明暗示它适用于 Python 3

    考虑使用较新的 jar Apache Archive Link for stable files

    最新的 Apache Phoenix 代码中至少 psql.py 似乎支持 Python 3 https://github.com/apache/phoenix/blob/master/bin/psql.py,因此您应该能够获得比您现有的更新版本的版本。

    这可以在最新的提交中看到


    如果您必须使用 1.4.x,则可以改为使用 Python 2 运行 psql.py。大多数操作系统都可以接受并行安装,尽管这可能会使一些依赖管理变得混乱,而且它不是一个可维护的解决方案。

    【讨论】:

    • 我安装了 hbase-2.2.6 和 apache-phoenix-5.0.0-HBase-2.0 并再次抛出相同的错误。 psql.py 来自 apache-phoenix/bin 目录。 psql.py 和 phoenix_utils.py 中的 python 代码是 Python 2.x 格式。我的 Python 版本是 3.8。我是 HBase 的新手,网上没有太多关于这个问题的信息。
    • @Green 你能简单地使用 Python 2 吗?
    • 如果您安装了 python2(方向将取决于操作系统 .. 对于 Debian 衍生产品 apt install python2.7),那么您可以使用它作为 python2 psql.py &lt;arguments&gt; 运行。但是,需要付出很多努力,并且最新版本应该可以与 Python 3 一起使用,所以我怀疑这一点我去检查了。最新版本确实支持它,所以我鼓励你使用它,因为它更易于维护(Python 2 支持于今年年初结束,该项目显然正在开发中使用 Python 3)
    • @Green 我已经编辑了我的答案以包含该信息以及一些支持链接!
    • 太好了,我成功了,谢谢......我在 Phoenix bin 文件夹中的 python 脚本文件中进行了必要的更改,就像在 Git 中一样。
    【解决方案2】:

    .has_key 在 3.x 中被删除,改用in

    另见Should I use 'has_key()' or 'in' on Python dicts?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-25
      • 2022-01-12
      • 2011-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-02
      相关资源
      最近更新 更多