【问题标题】:Getting GeoSpark error with upload_jars function使用 upload_jars 函数获取 GeoSpark 错误
【发布时间】:2020-12-02 22:58:55
【问题描述】:

我正在尝试在 AWS EMR 集群中运行 GeoSpark。代码是:

#  coding=utf-8

from pyspark.sql import SparkSession
import pyspark.sql.functions as f
import pyspark.sql.types as t
from geospark.register import GeoSparkRegistrator
from geospark.utils import GeoSparkKryoRegistrator
from geospark.register import upload_jars

import config as cf

import yaml


if __name__ == "__main__":
    # Read files
    with open("/tmp/param.yml", 'r') as ymlfile:
        param = yaml.load(ymlfile, Loader=yaml.SafeLoader)
    
    # Register jars
    upload_jars()

    # Creation of spark session
    print("Creating Spark session")
    spark = SparkSession \
        .builder \
        .getOrCreate()
    
    GeoSparkRegistrator.registerAll(spark)

我在upload_jars() 函数中收到以下错误:

Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/findspark.py", line 143, in init
    py4j = glob(os.path.join(spark_python, "lib", "py4j-*.zip"))[0]
IndexError: list index out of range

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "geo_processing.py", line 21, in <module>
    upload_jars()
  File "/usr/local/lib/python3.7/site-packages/geospark/register/uploading.py", line 39, in upload_jars
    findspark.init()
  File "/usr/local/lib/python3.7/site-packages/findspark.py", line 146, in init
    "Unable to find py4j, your SPARK_HOME may not be configured correctly"
Exception: Unable to find py4j, your SPARK_HOME may not be configured correctly

我该如何解决这个错误?

【问题讨论】:

    标签: python amazon-web-services apache-spark amazon-emr geospark


    【解决方案1】:

    解决方案

    您应该从您的代码中删除 upload_jars(),而是以另一种方式加载 jars,或者通过将它们复制到 SPARK_HOME(从 emr-4.0.0 开始在 /usr/lib/spark)作为 EMR 引导操作的一部分或在您的spark-submit 命令中使用--jars 选项。

    说明

    我无法让 upload_jars() 函数在多节点 EMR 集群上工作。根据geospark documentationupload_jars()

    使用 findspark Python 包将 jar 文件上传到执行器和节点。为了避免一直复制,jar 文件可以放在目录 SPARK_HOME/jars 或 Spark 配置文件中指定的任何其他路径中。

    Spark 在 EMR 上以 YARN 模式安装,这意味着它只安装在主节点上,而不是核心/任务节点上。因此,findspark 不会在核心/任务节点上找到 Spark,因此您会收到错误 Unable to find py4j, your SPARK_HOME may not be configured correctly

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-12
      • 2015-12-26
      • 1970-01-01
      • 2016-09-06
      • 2012-07-20
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      相关资源
      最近更新 更多