在 python 中安装 delta 模块的正确方法是什么?
What is the correct way to install the delta module in python?
在 python 中安装 delta 模块的正确方法是什么??
在 example 他们导入模块
from delta.tables import *
但是我没有找到在我的虚拟环境中安装模块的正确方法
目前我正在使用这个 spark 参数 -
"spark.jars.packages": "io.delta:delta-core_2.11:0.5.0"
因为 Delta 的 Python 代码存储在一个 jar 中并由 Spark 加载,所以 delta
模块在创建 SparkSession/SparkContext 之前无法导入。
在我的例子中,问题是我在低于 6.1
的 Databricks Runtime 上有一个集群 运行
https://docs.databricks.com/delta/delta-update.html
The Python API is available in Databricks Runtime 6.1 and above.
将 Databricks Runtime 更改为 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 here 上,自述文件建议您可以 pip install 但这不起作用。理论上你可以克隆它并手动安装。
要运行用PySpark在本地Delta,需要关注官方documentation.
这对我有用,但仅当直接执行脚本时 (python ),不适用于 pytest 或 单元测试.
要解决这个问题,需要添加这个环境变量:
PYSPARK_SUBMIT_ARGS='--packages io.delta:delta-core_2.12:1.0.0 pyspark-shell'
使用符合您情况的 Scala 和 Delta 版本。有了这个环境变量,我可以 运行 通过 cli 进行 pytest 或 unittest 没有任何问题
from unittest import TestCase
from delta import configure_spark_with_delta_pip
from pyspark.sql import SparkSession
class TestClass(TestCase):
builder = SparkSession.builder.appName("MyApp") \
.master("local[*]")
.config("spark.sql.extensions", "io.delta.sql.DeltaSparkSessionExtension") \
.config("spark.sql.catalog.spark_catalog", "org.apache.spark.sql.delta.catalog.DeltaCatalog")
spark = configure_spark_with_delta_pip(builder).getOrCreate()
def test_create_delta_table(self):
self.spark.sql("""CREATE IF NOT EXISTS TABLE <tableName> (
<field1> <type1>)
USING DELTA""")
函数configure_spark_with_delta_pip在构建器对象中附加了一个配置选项
.config("io.delta:delta-core_<scala_version>:<delta_version>")
以下是使用 conda 安装 Delta Lake 和 PySpark 的方法。
- 确保安装了 Java(我使用 SDKMAN 来管理多个 Java 版本)
- 安装Miniconda
- 选择 compatible 的 Delta Lake 和 PySpark 版本。例如,Delta Lake 1.2 与 PySpark 3.2 兼容。
- 创建一个包含所需依赖项的YAML文件,这里是an example from the delta-examples repo我创建的。
- 使用
conda env create envs/mr-delta.yml
这样的命令创建环境
- 使用
conda activate mr-delta
激活 conda 环境
- 这里是an example notebook。请注意,它以以下代码开头:
import pyspark
from delta import *
builder = pyspark.sql.SparkSession.builder.appName("MyApp") \
.config("spark.sql.extensions", "io.delta.sql.DeltaSparkSessionExtension") \
.config("spark.sql.catalog.spark_catalog", "org.apache.spark.sql.delta.catalog.DeltaCatalog")
spark = configure_spark_with_delta_pip(builder).getOrCreate()
在 python 中安装 delta 模块的正确方法是什么??
在 example 他们导入模块
from delta.tables import *
但是我没有找到在我的虚拟环境中安装模块的正确方法
目前我正在使用这个 spark 参数 -
"spark.jars.packages": "io.delta:delta-core_2.11:0.5.0"
因为 Delta 的 Python 代码存储在一个 jar 中并由 Spark 加载,所以 delta
模块在创建 SparkSession/SparkContext 之前无法导入。
在我的例子中,问题是我在低于 6.1
的 Databricks Runtime 上有一个集群 运行https://docs.databricks.com/delta/delta-update.html
The Python API is available in Databricks Runtime 6.1 and above.
将 Databricks Runtime 更改为 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 here 上,自述文件建议您可以 pip install 但这不起作用。理论上你可以克隆它并手动安装。
要运行用PySpark在本地Delta,需要关注官方documentation.
这对我有用,但仅当直接执行脚本时 (python
要解决这个问题,需要添加这个环境变量:
PYSPARK_SUBMIT_ARGS='--packages io.delta:delta-core_2.12:1.0.0 pyspark-shell'
使用符合您情况的 Scala 和 Delta 版本。有了这个环境变量,我可以 运行 通过 cli 进行 pytest 或 unittest 没有任何问题
from unittest import TestCase
from delta import configure_spark_with_delta_pip
from pyspark.sql import SparkSession
class TestClass(TestCase):
builder = SparkSession.builder.appName("MyApp") \
.master("local[*]")
.config("spark.sql.extensions", "io.delta.sql.DeltaSparkSessionExtension") \
.config("spark.sql.catalog.spark_catalog", "org.apache.spark.sql.delta.catalog.DeltaCatalog")
spark = configure_spark_with_delta_pip(builder).getOrCreate()
def test_create_delta_table(self):
self.spark.sql("""CREATE IF NOT EXISTS TABLE <tableName> (
<field1> <type1>)
USING DELTA""")
函数configure_spark_with_delta_pip在构建器对象中附加了一个配置选项
.config("io.delta:delta-core_<scala_version>:<delta_version>")
以下是使用 conda 安装 Delta Lake 和 PySpark 的方法。
- 确保安装了 Java(我使用 SDKMAN 来管理多个 Java 版本)
- 安装Miniconda
- 选择 compatible 的 Delta Lake 和 PySpark 版本。例如,Delta Lake 1.2 与 PySpark 3.2 兼容。
- 创建一个包含所需依赖项的YAML文件,这里是an example from the delta-examples repo我创建的。
- 使用
conda env create envs/mr-delta.yml
这样的命令创建环境
- 使用
conda activate mr-delta
激活 conda 环境
- 这里是an example notebook。请注意,它以以下代码开头:
import pyspark
from delta import *
builder = pyspark.sql.SparkSession.builder.appName("MyApp") \
.config("spark.sql.extensions", "io.delta.sql.DeltaSparkSessionExtension") \
.config("spark.sql.catalog.spark_catalog", "org.apache.spark.sql.delta.catalog.DeltaCatalog")
spark = configure_spark_with_delta_pip(builder).getOrCreate()