我正在使用Databricks上的镶嵌进行一些地理空间转换,到目前为止,它运行得很好。
随着我的代码库开始增长,我正在寻找一种方法在本地机器上运行地理空间转换上的单元测试。然而,我不能让马赛克在当地工作。下面是一个复制我得到的错误的最小示例:
from mosaic import enable_mosaic
from pyspark.sql import SparkSession
spark_session = (
SparkSession.builder.master("local[*]").appName("mylib-tests").getOrCreate()
)
enable_mosaic(spark_session) # <- Error here下面是运行enable_mosaic(spark_session)的完整日志,包括我得到的错误:
22/05/18 12:00:23 INFO MosaicLibraryHandler: Looking for Mosaic JAR at /home/nicolas/.pyenv/versions/myenv/lib/python3.9/site-packages/mosaic/lib/mosaic-0.1.1-jar-with-dependencies.jar.
22/05/18 12:00:23 INFO MosaicLibraryHandler: Automatically attaching Mosaic JAR to cluster.
Traceback (most recent call last):
File "/home/nicolas/.pyenv/versions/myenv/lib/python3.9/site-packages/IPython/core/interactiveshell.py", line 3437, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-4-e83e439e0633>", line 1, in <module>
enable_mosaic(spark_session)
File "/home/nicolas/.pyenv/versions/myenv/lib/python3.9/site-packages/mosaic/api/enable.py", line 47, in enable_mosaic
_ = MosaicLibraryHandler(config.mosaic_spark)
File "/home/nicolas/.pyenv/versions/myenv/lib/python3.9/site-packages/mosaic/core/library_handler.py", line 29, in __init__
self.auto_attach()
File "/home/nicolas/.pyenv/versions/myenv/lib/python3.9/site-packages/mosaic/core/library_handler.py", line 76, in auto_attach
ManagedLibraryId.defaultOrganization(),
TypeError: 'JavaPackage' object is not callable我想我的本地设置和Databricks上的环境有一些不同,但是我找不到缺少的东西。是否有人设法让Mosaic在Databricks之外工作?
发布于 2022-05-24 07:44:42
我终于成功了。
当我更改星火会话的配置时,问题消失了,如下所示:
spark_session = (
SparkSession.builder.master("local[*]")
.config(
"spark.jars",
f"{os.environ['VIRTUAL_ENV']}/lib/python3.9/site-packages/"
"mosaic/lib/mosaic-0.1.1-jar-with-dependencies.jar",
)
.config("spark.databricks.labs.mosaic.jar.autoattach", False)
.appName("mylib-tests")
.getOrCreate()
)
enable_mosaic(spark_session) # works我希望这能帮助其他人至少有一些有用的东西,尽管我发现在python虚拟环境中引用jar文件并不是很干净……如果您有更好的解决方案,请随时留下另一个答案。
https://stackoverflow.com/questions/72289894
复制相似问题