python - 在 AWS lambda 函数上使用 pyspark 二进制文件,在向驱动程序发送其端口号之前退出错误 Java 网关进程
问题描述
我的 lambda 函数(python 3.6)有问题,lambda 函数使用 pyspark(spark-2.3.0-bin-hadoop2.7 二进制文件)。
由于 pyspark 二进制文件很大(226 MB zip 文件),我将 zip 文件上传到 S3 存储桶中。lambda 函数会将文件解压缩到 /tmp 文件夹中。解压 pyspark 后,将授予文件夹和文件的权限:
for root, dirs, filenames in os.walk(/tmp/spark):
for d in dirs:
os.chmod(os.path.join(root, d), 0o775)
for f in filenames:
os.chmod(os.path.join(root, f), 0o775)
在 lambda 函数上,SPARK_HOME 环境变量的值已设置为 /tmp/spark
还:
sys.path.append('/tmp/spark/python')
sys.path.append('/tmp/spark/python/lib/py4j-0.10.6-src.zip')
from pyspark import SparkContext
from pyspark import SparkConf
from pyspark.sql import SQLContext
from pyspark.sql import SparkSession
from pyspark.sql.types import *
...
...
sc = SparkContext(appName="ProjectCSV")
sqlContext = SQLContext(sc)
...
...
一旦 SparkContext(appName="ProjectCSV") 执行,它就会报告以下错误:
Java gateway process exited before sending the driver its port number
PYSPARK_SUBMIT_ARGS 环境变量已添加如下:
os.environ['PYSPARK_SUBMIT_ARGS'] = "--master local[2] pyspark-shell"
仍然报同样的错误。
任何想法或建议,可能是什么问题,我该如何解决这个问题?
解决方案
尝试检查环境中是否设置了 JAVA_HOME。如果不是 java 可能还没有安装。
推荐阅读
- salesforce - 为帐号创建条件自动编号字段的要求
- python - 如何在熊猫中使用 groupby 选择某个值的频率?
- android - 使用两种方式绑定的可观察字段用法(删除属性更改侦听器)
- c# - 如何防止在 for 循环评估中除以零?
- class - 这个类图是否允许这个 UML 对象图?
- r - R中ROC下的区域
- permissions - 监视代理的 WMI 权限
- python - 如何编辑我的views.py,以便未经授权的用户可以看到公开的帖子?
- elasticsearch - Logstash/grok 输出sincedb inode number 可能吗?
- c# - 获取 System.NullReferenceException:“对象引用未设置为对象的实例。” 调用服务时