У меня небольшой кластер Spark 2.4.1, работающий на Docker, не могу подключиться с помощью pyspark. Мастер доступен (некоторые журналы ошибок пишутся относительно сбоя при попытке подключения).
Docker -составить файл:
version: '3.4'
services:
#####################
# SPARK #
#####################
master: #Master node for spark
image: gettyimages/spark
command: bin/spark-class org.apache.spark.deploy.master.Master -h master
hostname: master
environment:
MASTER: spark://master:7077
SPARK_CONF_DIR: /conf
SPARK_PUBLIC_DNS: localhost
expose:
- 7001
- 7002
- 7003
- 7004
- 7005
- 7077
- 6066
ports:
- 4040:4040
- 6066:6066
- 7077:7077
- 8080:8080
volumes:
- ./conf/master:/conf
- ./data:/tmp/data
- ./win_utils:/usr/hadoop-3.0.0/bin
worker: #Worker node for spark
image: gettyimages/spark
command: bin/spark-class org.apache.spark.deploy.worker.Worker spark://master:7077
hostname: worker
environment:
SPARK_CONF_DIR: /conf
SPARK_WORKER_CORES: 2
SPARK_WORKER_MEMORY: 1g
SPARK_WORKER_PORT: 8882
SPARK_WORKER_WEBUI_PORT: 8082
SPARK_PUBLIC_DNS: localhost
links:
- master
expose:
- 7012
- 7013
- 7014
- 7015
- 8881
ports:
- 8082:8082
volumes:
- ./conf/worker:/conf
- ./data:/tmp/data
- ./win_utils:/usr/hadoop-3.0.0/bin
У меня Pyspark 2.4.1, попробуйте подключиться к:
from pyspark import SparkContext, SparkConf
appName = "testsparkapp"
master = "spark://localhost:7077"
conf = SparkConf().setAppName(appName).setMaster(master)
sc = SparkContext(conf=conf)
Python журналы ошибок:
Py4JJavaError: An error occurred while calling None.org.apache.spark.api.java.JavaSparkContext.
: java.lang.NullPointerException
at org.apache.spark.storage.BlockManagerMaster.registerBlockManager(BlockManagerMaster.scala:66)
at org.apache.spark.storage.BlockManager.initialize(BlockManager.scala:464)
at org.apache.spark.SparkContext.<init>(SparkContext.scala:579)
at org.apache.spark.api.java.JavaSparkContext.<init>(JavaSparkContext.scala:58)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
Docker журналы контейнеров:
2020-06-19 06:07:15,847 ERROR server.TransportRequestHandler: Error while invoking RpcHandler#receive() for one-way message.
java.io.InvalidClassException: org.apache.spark.deploy.ApplicationDescription; local class incompatible: stream classdesc serialVersionUID = 1574364215946805297, local class serialVersionUID = 6543101073799644159
at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:699)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751)
Я прочитал несоответствие
Версии Pyspark и Spark совпадают с spark-submit --version возвращает 2.4.1, так что pip зависает для pyspark.
Имеет ли значение версия Spark У меня на локальной машине (3.0.0)? Если да, то какой смысл иметь Docker?
Спасибо.