Spark на Kubernetes - Отправка заданий из запущенного модуля через pyspark - PullRequest
0 голосов
/ 29 августа 2018

У меня есть кластер kubernetes, в котором я развернул собственный искровой кластер. У Spark есть один главный модуль и один рабочий модуль в пространстве имен «искра». У главного модуля есть служба "spark-master-svc", которая предоставляет порт 7077.

У меня есть еще один модуль, в котором запущено приложение на Python, из которого мне иногда нужно отправлять данные для запуска. Стручок имеет безголовый сервис.

Это приложение подключается к искре так:

import json
from pyspark import SparkConf
from pyspark.sql import SparkSession

def get_spark(app):
    spark = (SparkSession.builder.master(f'spark://spark-master-svc.spark:7077')
             .config(conf=SparkConf())
             .config('spark.ui.showConsoleProgress', 'false')
             .config('spark.executor.extraJavaOptions',
                     '-XX:-UseGCOverheadLimit -XX:+PrintGCDetails -XX:+PrintGCTimeStamps')
             .appName(app))
    spark = spark.getOrCreate()
    spark.sparkContext.setLogLevel('WARN')

spark = get_spark('demo')

rdd = spark.sparkContext.parallelize(json.dumps([{'a':1,'b':'test'}]))  # demo purpose
df = spark.read.json(rdd)

Проблема в том, что spark по какой-то причине не может подключиться к моему демонстрационному приложению для привязки к произвольному порту (или любому другому порту, если я его укажу). Вот пример журнала:

Exception in thread "main" java.lang.reflect.UndeclaredThrowableException
...
Caused by: org.apache.spark.rpc.RpcTimeoutException: Cannot receive any reply from demo:37493 in 120 seconds. This timeout is controlled by spark.rpc.askTimeout
...

Это говорит мне о том, что spark пытается подключиться к моему демонстрационному контейнеру через произвольный порт, но не может. Как бы я мог это исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...