Pyspark 在python中安装增量模块的正确方法是什么?

Pyspark 在python中安装增量模块的正确方法是什么?,pyspark,databricks,delta-lake,Pyspark,Databricks,Delta Lake,在python中安装增量模块的正确方法是什么 在中,他们导入模块 从delta.tables导入* 但是我没有找到在虚拟环境中安装模块的正确方法 目前我正在使用这个spark参数- “spark.jars.packages”:“io.delta:delta-core_2.11:0.5.0”因为delta的Python代码存储在jar中并由spark加载,所以在创建SparkSession/SparkContext之前,delta模块无法导入。在我的案例中,问题是我有一个集群运行在低于6.1的Da

在python中安装增量模块的正确方法是什么

在中,他们导入模块

从delta.tables导入*

但是我没有找到在虚拟环境中安装模块的正确方法

目前我正在使用这个spark参数-


“spark.jars.packages”:“io.delta:delta-core_2.11:0.5.0”

因为delta的Python代码存储在jar中并由spark加载,所以在创建SparkSession/SparkContext之前,
delta模块无法导入。

在我的案例中,问题是我有一个集群运行在低于6.1的Databricks运行时上

Python API在Databricks Runtime 6.1及更高版本中提供

将Databricks运行时更改为6.4后,问题消失了


要做到这一点:单击集群->选择您正在使用的集群->编辑->选择Databricks Runtime 6.1及以上版本

由于正确答案隐藏在已接受解决方案的注释中,我想我应该将其添加到这里

您需要使用一些额外设置创建spark上下文,然后可以导入增量:

spark_session = SparkSession.builder \
    .master("local") \
    .config("spark.jars.packages", "io.delta:delta-core_2.12:0.8.0") \
    .config("spark.sql.extensions", "io.delta.sql.DeltaSparkSessionExtension") \
    .config("spark.sql.catalog.spark_catalog", "org.apache.spark.sql.delta.catalog.DeltaCatalog") \
    .getOrCreate()

from delta.tables import *
令人烦恼的是,你的IDE当然会对你大喊大叫,因为软件包没有安装,你也会在没有自动完成和键入提示的情况下运行。我确信有一个解决办法,如果我遇到它,我会更新


软件包本身就在他们的github上,自述文件建议您可以pip安装,但这不起作用。理论上,您可以克隆它并手动安装。

我创建了一个SparkSession,但仍然会出现错误。你有可以工作的代码吗?我不是100%确定,但我认为delta.tables import*
中的
不会在Databricks运行时之外工作。但是,您可以使用增量表,而不是特定的增量表实用程序。您是如何启动pyspark的?如果您运行类似于
pyspark--packages io.delta:delta-core_2.11:0.5.0…
,它应该可以工作。启动python后,再运行
SparkSession.builder.config(“spark.jars.packages”、'io.delta:delta-core_2.11:0.6.1').config(“spark.delta.logStore.class”、“org.apache.spark.sql.delta.storage.S3SingleDriverLogStore”).config(“spark.sql.extensions”,“io.delta.sql.DeltaSparkSessionExtension”).config(“spark.sql.catalog.spark_catalog”、“org.apache.spark.sql.delta.catalog.DeltaCatalog”).getOrCreate()
读取和写入增量表是有效的,
从Delta.Tables import*
不起作用。但是,当我像您一样启动pyspark REPL时会起作用。-我必须弄清楚这一点。
spark.jars.packages
org.apache.spark.deploy.SparkSubmitArguments/SparkSubmit
处理。因此它必须作为
spark submit
。当调用
SparkSession.builder.config
时,
SparkSubmit
已经完成了它的工作。因此
spark.jars.packages
现在不是一个操作。感谢您的回答,但我想这个问题是与“纯”python相关的Databricks@Andrej不,它不是,它有一个“数据记录”tagI猜测带有databricks的标记是错误的,应该删除,delta lake是在databricks开箱即用中配置的-例如,在本地机器上设置spark时,您需要使用“spark.jars.packages”。