我正在设置GeoSpark Python,在安装了所有的先决条件之后,我将运行非常基本的代码示例来测试它。
from pyspark.sql import SparkSession
from geo_pyspark.register import GeoSparkRegistrator
spark = SparkSession.builder.\
getOrCreate()
GeoSparkRegistrator.registerAll(spark)
df = spark.sql("""SELECT st_GeomFromWKT('POINT(6.0 52.0)') as geom""")
df.show()
我尝试用python3 basic.py
和spark-submit basic.py
运行它,两者都给出了以下错误:
Traceback (most recent call last):
File "/home/jessica/Downloads/geo_pyspark/basic.py", line 8, in <module>
GeoSparkRegistrator.registerAll(spark)
File "/home/jessica/Downloads/geo_pyspark/geo_pyspark/register/geo_registrator.py", line 22, in registerAll
cls.register(spark)
File "/home/jessica/Downloads/geo_pyspark/geo_pyspark/register/geo_registrator.py", line 27, in register
spark._jvm. \
TypeError: 'JavaPackage' object is not callable
我使用的是Java8、Python3、ApacheSpark2.4,我的JAVA_HOME
设置正确,我运行的是Linux 19。我的SPARK_HOME
也被设置为:
$ printenv SPARK_HOME
/home/jessica/spark/
我怎么才能解决这个问题?
发布于 2020-02-03 13:22:15
geoSpark的Jars没有正确地注册到Spark会话中。有几种方法可以解决这一问题,从一点不方便到相当无缝。例如,如果在调用spark submit时指定:
--jars jar1.jar,jar2.jar,jar3.jar
然后问题就会消失,如果这是您的毒药,您还可以提供一个类似于pyspark
的命令。
如果像我一样,在每次启动时都不想这样做(并将其设置为木星中的.conf()
将变得令人厌烦),那么您可以进入$SPARK_HOME/conf/spark-defaults.conf
并设置如下:
spark-jars jar1.jar,jar2.jar,jar3.jar
当您创建一个星火实例时,它将被加载。如果您还没有使用conf文件之前,它将以spark-defaults.conf.template
的形式出现。
当然,当我说jar1.jar..。我真正想说的是:
/jars/geo_wrapper_2.11-0.3.0.jar,/jars/geospark-1.2.0.jar,/jars/geospark-sql_2.3-1.2.0.jar,/jars/geospark-viz_2.3-1.2.0.jar
但这取决于您从geo_pyspark包中获得正确的包。
如果您正在使用EMR:,则需要将群集配置json设置为
[
{
"classification":"spark-defaults",
"properties":{
"spark.jars": "/jars/geo_wrapper_2.11-0.3.0.jar,/jars/geospark-1.2.0.jar,/jars/geospark-sql_2.3-1.2.0.jar,/jars/geospark-viz_2.3-1.2.0.jar"
},
"configurations":[]
}
]
并让你的罐子上传作为你的引导的一部分。您可以从Maven中这样做,但我只是把它们扔到了一个S3桶上:
#!/bin/bash
sudo mkdir /jars
sudo aws s3 cp s3://geospark-test-ds/bootstrap/geo_wrapper_2.11-0.3.0.jar /jars/
sudo aws s3 cp s3://geospark-test-ds/bootstrap/geospark-1.2.0.jar /jars/
sudo aws s3 cp s3://geospark-test-ds/bootstrap/geospark-sql_2.3-1.2.0.jar /jars/
sudo aws s3 cp s3://geospark-test-ds/bootstrap/geospark-viz_2.3-1.2.0.jar /jars/
如果您使用的是电子病历笔记本,您需要在笔记本的顶部安装一个神奇的单元:
%%configure -f
{
"jars": [
"s3://geospark-test-ds/bootstrap/geo_wrapper_2.11-0.3.0.jar",
"s3://geospark-test-ds/bootstrap/geospark-1.2.0.jar",
"s3://geospark-test-ds/bootstrap/geospark-sql_2.3-1.2.0.jar",
"s3://geospark-test-ds/bootstrap/geospark-viz_2.3-1.2.0.jar"
]
}
发布于 2020-08-26 00:08:20
我在Windows10机器上看到了类似的SparkMeasure jars问题
self.stagemetrics =
self.sc._jvm.ch.cern.sparkmeasure.StageMetrics(self.sparksession._jsparkSession)
TypeError: 'JavaPackage' object is not callable
所以我做的是
ch.cern.sparkmeasure_spark-measure_2.12-0.16.jar
),复制到SPARK_HOME的jar文件夹中https://stackoverflow.com/questions/58608226
复制相似问题