首页 > 解决方案 > 异常:Java 网关进程在使用 pyspark 发送其端口号之前已退出

问题描述

我在 jupyter notebook 中使用 python 和 pyspark。我正在尝试从 aws s3 存储桶中读取几个镶木地板文件并将它们转换为单个 json 文件。

这就是我所拥有的:

from functools import reduce
from pyspark.sql import DataFrame


bucket = s3.Bucket(name='mybucket')

keys =[]
for key in bucket.objects.all():
    keys.append(key.key)
    
print(keys[0])

from pyspark.sql import SparkSession
# initialise sparkContext
spark = SparkSession.builder \
    .master('local') \
    .appName('myAppName') \
    .config('spark.executor.memory', '5gb') \
    .config("spark.cores.max", "6") \
    .getOrCreate()

sc = spark.sparkContext

但我得到:

Exception: Java gateway process exited before sending its port number with pyspark

我不知道如何解决这个问题,谢谢!

标签: pythonamazon-s3pysparkparquet

解决方案


您收到此错误是因为您的 pyspark 无法与您的集群通信。你需要像这样设置一些全局变量的值。

import os
import findspark
findspark.init()

os.environ['PYSPARK_SUBMIT_ARGS'] = """--name job_name --master yarn / local
--conf spark.dynamicAllocation.enabled=true
pyspark-shell""" 

os.environ['PYSPARK_PYTHON'] = "python3.6" # what ever version of python your using
os.environ['python'] = "python3.6"

findspark 包是可选的,但在 pyspark 的情况下使用它很好。


推荐阅读