在AWS lambda函数上使用pyspark二进制文件,在向驱动程序发送其端口号之前退出错误Java网关进程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在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可能没有安装。

以上是关于在AWS lambda函数上使用pyspark二进制文件,在向驱动程序发送其端口号之前退出错误Java网关进程的主要内容,如果未能解决你的问题,请参考以下文章

AWS lambda 函数 python/pyspark

在 AWS Lambda 函数中运行 Sharp 时出错:darwin-x64' 二进制文件不能在 'linux-x64' 平台上使用

如何在 Python 中从 AWS 中的 lambda 函数返回二进制数据?

错误:darwin-x64' 二进制文件不能在 'linux-x64' 平台上使用(AWS lambda + typescript + webpack sharp 模块)

使用无服务器和 chrome-aws-lambda 节点包在 AWS Lambda 上找不到 Chrome 二进制文件

如何使用AWS Lambda函数在本地系统上执行文件