Python 运行 Apache Phoenix 命令时的兼容性问题

Python compatibility issue while running Apache Phoenix command

我成功安装了 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.

编写的

如何解决这个问题?

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

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

简单搜索一下,HBase-1.4 似乎是 2017 年的,而最新的稳定版是 2.2.5 .. 发行说明暗示它适用于 Python 3

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

至少 psql.py 在最新的 Apache Phoenix 代码中确实支持 Python 3 https://github.com/apache/phoenix/blob/master/bin/psql.py 所以你应该能够获得比你现有的更新的版本它。

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


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