如何在 HDP 2.6 上启用 Python3 支持

How to Enable Python3 Support on HDP 2.6

HDP 2.6(HortonWorks 数据平台)不支持 Python3。 虽然 Python3(或 Anaconda3)受到许多数据科学家的高度赞赏。

如何在 HDP 2.6 上启用 Python3 支持?

限制在几个文件中

  • /usr/bin/hdp-select
  • /etc/hadoop/conf/topology_script.py

2to3 应用程序可用于转换 Python 文件以支持 Python3。

2to3 -w /usr/bin/hdp-select
2to3 -w /etc/hadoop/conf/topology_script.py

对 /etc/hadoop/conf/topology_script.py 稍作改动以同时支持 Python2 和 Python3.

虽然在这些更改之后,knox 无法重新启动。

经过调查,尽管更改使 python 代码可在 Python2 和 Python 上运行。 行为略有不同。

Knox重启时会执行以下命令

ambari-python-wrapper /usr/bin/hdp-select packages

原始脚本输出类似于

Packages:
  accumulo-client
  accumulo-gc

...

2to3 更改后,脚本输出将类似于

Packages:
(' ', 'accumulo-client')
(' ', 'accumulo-gc')      

两者的输出有一定的不同。而 HDP 使用这些标准输出作为接口。

效果可以归结为以下代码。两个打印语句有不同的输出。

pkg = "knox-server"
print " ", pkg

print(" ", pkg)

将打印语句更改为 print(" ", pkg) 修复了这个问题