Python3をHDP2.6のPySparkで用いたときのエラー

参考

メモ

以下のようなコマンドでPython3のipythonをドライバのPythonとして指定しながら起動したところ、 エラーを生じた。

1
2
3
4
5
6
$ pyspark --master yarn --conf spark.pyspark.driver.python=ipython

$ ipython --version
7.1.1
$ python --version
Python 3.6.7 :: Anaconda, Inc.

エラー内容は以下の通り。

1
2
3
4
5
6
7
8
9
10
11
18/11/18 12:30:09 WARN ScriptBasedMapping: Exception running /etc/hadoop/conf/topology_script.py 192.168.33.83
ExitCodeException exitCode=1: File "/etc/hadoop/conf/topology_script.py", line 63
print rack
^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print(rack)?

at org.apache.hadoop.util.Shell.runCommand(Shell.java:954)
at org.apache.hadoop.util.Shell.run(Shell.java:855)
at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:1163)
at org.apache.hadoop.net.ScriptBasedMapping$RawScriptBasedMapping.runResolveComman
(snip)

Hortonworksのコミュニティによる情報によると、Python2系しか対応していないというが、本当かどうか確認が必要。 同様のことを指摘している記事として2to3を用いる方法の記事が挙げられるが、そこでは

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

の2ファイルがPython2でしか動作しない内容で記載されているようだ。 ためしに/usr/bin/hdp-selectをのぞいてみたら、確かにPython2系に限定された実装の箇所がチラホラ見受けられた。

Sparkでのvirtualenv対応

SPARK-13587: Support virtualenv in PySparkでHortonworkの人中心に議論されており、 ターゲットバージョンは3.0.1とされている。

HortonworkによるSparkのvirtualenv対応に記載の方法は、Hortonworksの独自拡張なのか。

共有