私は、マスターとスレーブのワーカーと一緒にApache Sparkを実行しているDockerコンテナを持っています。ホストマシン上のJupyterノートブックからジョブを送信しようとしています。以下を参照してください:ローカルJupyterノートブックからDockerコンテナのSparkマスタにPySparkジョブを実行するにはどうすればいいですか?
# Init
!pip install findspark
import findspark
findspark.init()
# Context setup
from pyspark import SparkConf, SparkContext
# Docker container is exposing port 7077
conf = SparkConf().setAppName('test').setMaster('spark://localhost:7077')
sc = SparkContext(conf=conf)
sc
# Execute step
import random
num_samples = 1000
def inside(p):
x, y = random.random(), random.random()
return x*x + y*y < 1
count = sc.parallelize(range(0, num_samples)).filter(inside).count()
pi = 4 * count/num_samples
print(pi)
実行ステップは次のエラーを示しています
Py4JJavaError: An error occurred while calling z:org.apache.spark.api.python.PythonRDD.collectAndServe.
: org.apache.spark.SparkException:
Job aborted due to stage failure: Task 1 in stage 0.0 failed 4 times, most recent failure: Lost task 1.3 in stage 0.0 (TID 6, 172.17.0.2, executor 0):
java.io.IOException: Cannot run program "/Users/omar/anaconda3/bin/python": error=2, No such file or directory
それはそれは指定されたスパークマスターに送信する必要がありますときに、コマンドがローカルスパークジョブを実行しようとしているように私には見えます前の手順でこれはジュピターのノートブックでは不可能ですか?
私のコンテナはhttps://hub.docker.com/r/p7hb/docker-spark/に基づいていますが、/usr/bin/python3.6
の下にPython 3.6がインストールされています。