Отправка сценария pyspark на удаленный сервер Spark? - PullRequest
0 голосов
/ 12 февраля 2019

Возможно, это действительно глупый вопрос, но я не могу найти ответ в Google.Я написал простой сценарий pyspark ETL, который читает в CSV и записывает его в Parquet, что-то вроде этого:

spark = SparkSession.builder.getOrCreate()
sqlContext = SQLContext(spark.sparkContext)
df = sqlContext.read.csv(input_filename)
df.write.parquet(output_path)

Чтобы запустить его, я запускаю локальный кластер Spark в Docker:

$ docker run --network=host jupyter/pyspark-notebook

Я запускаю скрипт Python, и он подключается к этому локальному кластеру Spark, и все работает как положено.

Теперь я хотел бы запустить этот же скрипт на удаленном кластере Spark (AWS EMR),Могу ли я просто указать удаленный IP-адрес где-нибудь при инициализации контекста Spark?Или я неправильно понимаю, как работает Spark?

1 Ответ

0 голосов
/ 12 февраля 2019

Вы можете создать сеанс активации, указав IP-адрес удаленного мастера.

spark = SparkSession.builder.master("spark://<ip>:<port>").getOrCreate()

В случае AWS EMR автономный режим не поддерживается.Вам необходимо использовать пряжу в режиме клиента или кластера и указать HADOOP_CONF_DIR на местоположение на локальном сервере, где присутствуют все файлы из / etc / hadoop / conf.Затем настройте динамическое перенаправление портов для подключения к кластеру EMR.Создайте сеанс зажигания, например:

spark = SparkSession.builder.master('yarn').config('spark.submit.deployMode', 'cluster').getOrCreate()

см. https://aws.amazon.com/premiumsupport/knowledge-center/emr-submit-spark-job-remote-cluster/

...