我刚接触GeoTrellis,对geopyspark readme:https://github.com/locationtech-labs/geopyspark中的示例脚本有一个问题。
下面是该脚本的一个简化版本(我们将其称为example.py):
import json
from functools import partial
from geopyspark.geopycontext import GeoPyContext
from geopyspark.geotrellis.constants import SPATIAL, ZOOM
from geopyspark.geotrellis.geotiff_rdd import get
from geopyspark.geotrellis.catalog import write
from shapely.geometry import Polygon, shape
from shapely.ops import transform
import pyproj
# Create the GeoPyContext
geopysc = GeoPyContext(appName="example", master="local[*]")
# Read in the NLCD tif that has been saved locally.
# This tif represents the state of Pennsylvania.
raster_rdd = get(geopysc=geopysc, rdd_type=SPATIAL,
uri='/tmp/NLCD2011_LC_Pennsylvania.tif',
options={'numPartitions': 100})我可以使用python3 example.py在电子病历集群上运行它,但是当我尝试运行spark-submit example.py时,我得到了TypeError:'JavaPackage‘对象不可调用。
这似乎指向geopyspark/geotrellis/geotiff_rdd.py中的这一行:geotiff_rdd = geopysc._jvm.geopyspark.geotrellis.io.geotiff.GeoTiffRDD
有没有办法使用spark-submit运行这段代码?根据我所读到的,我似乎不能在使用python example.py的集群上运行我的代码。真的是这样吗?如果是这样的话,我如何解决这个问题,以便在集群上运行GeoPySpark代码?
我应该只学习scala并使用它吗?
发布于 2017-08-16 06:33:53
@charlie-hofmann。我是GeoPySpark的开发人员之一,可以给你一些帮助。
我想指出的第一件事是,我们昨天刚刚发布了APIv0.2.0,随着这个版本的发布,GeoPySpark带来了一些没有反映在示例代码中的重大变化。我们已经更新了该示例,该示例将适用于0.2.0版本。
您之前遇到的错误确实是因为没有安装后端jar (由于PyPi上的大小限制,需要单独下载),但是当您尝试在EMR上运行代码时,您会发现它不起作用。如果你熟悉Docker,我们有一个容器,它具有运行GeoPySpark所需的环境,包括在电子病历上。
可以通过以下命令下载:
docker pull quay.io/geodocker/jupyter-geopyspark
我们在容器中部署电子病历的一种方式是将二进制依赖项放入传递给spark-submit的归档中。不幸的是,我不是很熟悉EMR,所以我不能提供更多的帮助。不过,我们有一个包含在电子病历上使用GeoPySpark的示例的repository。此外,我们还提供了一个Gitter channel,对该主题有更多了解的开发人员可以在其中回答您的问题。
很抱歉,我不能回答您的所有问题,但我至少想提供一些帮助。
最好的
杰克
https://stackoverflow.com/questions/45617215
复制相似问题