ofr*_*man 6 pyspark databricks delta-lake
在python中安装delta模块的正确方法是什么?
在示例中,他们导入模块
from delta.tables import *
但我没有找到在我的虚拟环境中安装模块的正确方法
目前我正在使用这个火花参数 -
"spark.jars.packages": "io.delta:delta-core_2.11:0.5.0"
小智 7
使用PySpark在本地运行Delta,需要遵循官方文档。
这对我有用,但仅在直接执行脚本(python <script_file>)时有效,而不是在使用pytest或unittest时有效。
为了解决这个问题,需要添加这个环境变量:
PYSPARK_SUBMIT_ARGS='--packages io.delta:delta-core_2.12:1.0.0 pyspark-shell'
Run Code Online (Sandbox Code Playgroud)
使用与您的案例匹配的 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""")
Run Code Online (Sandbox Code Playgroud)
函数configure_spark_with_delta_pip在构建器对象中附加一个配置选项
.config("io.delta:delta-core_<scala_version>:<delta_version>")
Run Code Online (Sandbox Code Playgroud)
由于正确答案隐藏在已接受解决方案的评论中,我想我会在这里添加它。
您需要使用一些额外的设置创建您的 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 *
Run Code Online (Sandbox Code Playgroud)
令人讨厌的是,您的 IDE 当然会因为没有安装软件包而向您大喊大叫,而且您还将在没有自动完成和类型提示的情况下进行操作。我确定有一个解决方法,如果我遇到它,我会更新。
包本身就是对他们的github这里和自述建议你可以安装PIP,但不起作用。理论上你可以克隆它并手动安装。
| 归档时间: |
|
| 查看次数: |
2744 次 |
| 最近记录: |