python - 异常: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
我不知道如何解决这个问题,谢谢!
解决方案
您收到此错误是因为您的 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 的情况下使用它很好。
推荐阅读
- javascript - 无法从 API 获得正确响应
- javascript - 如何使用补间动画在 Phaser 3 中为线条缩放设置动画?
- javascript - 类构造函数 Object3D 不能在 new THREE.CSS2DObject 处没有“new”的情况下被调用
- python - AWS API GW + Lambda 烧瓶
- javascript - 水平居中对齐
- java - 如何在 Apache NetBeans IDE 上创建 jar 文件
- c# - 查询列表并将 Id 与登录的 userId 进行比较
- java - JRE 忽略 TLSv1.1 首选项
- c# - MVP 模式 - 在被动视图中填充列表和网格
- node.js - 我不明白为什么我的 api 在我使用 app.get 调用它时返回未知/未定义