等效于 Databricks sc.broadcast() 在本地与 Databricks 连接
Equivalent of Databricks sc.broadcast() locally with Databricks connect
我正在将一些代码从 Databricks notebook 传输到本地的 Jupyter notebook。
以下在 Databricks Notebook 中运行的代码在本地无法运行。
res = sc.broadcast(spark.read.table(my_table))
这是我的本地代码:
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
res = sc.broadcast(spark.read.table(my_table))
出现错误:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-67-dface594b1d3> in <module>
----> 1 ccode_dict = sc.broadcast(spark.read.table(my_table))
AttributeError: 'SparkSession' object has no attribute 'broadcast'
有没有替代 sc.broadcast() 的方法?
我正在使用 Databricks 连接到 运行 我在本地的代码:https://docs.databricks.com/dev-tools/databricks-connect.html
所以主要问题是,在创建 SparkSession() 时,您还创建了 SparkContext(),这意味着如果您通过以下方式创建新的 sparkContext():
sc = SparkContext()
您将新建一个与 sparkSession() 创建的 SparkContext() 冲突的新 SparkContext()。您应该做的是首先创建您的 SparkSession,然后从 SparkSession() 检索 SparkContext。这是代码:
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate() # Create Spark Session
sc = spark.sparkContext # Retrieve the Spark Context from the Spark Session
# You can now use broadcast from the spark context
res = sc.broadcast(spark.read.table(my_table))
除了从 SparkSession 中检索 sparkContext,您还可以直接如下所示获取它:
res = spark.sparkContext.broadcast(spark.read.table(my_table))
我正在将一些代码从 Databricks notebook 传输到本地的 Jupyter notebook。
以下在 Databricks Notebook 中运行的代码在本地无法运行。
res = sc.broadcast(spark.read.table(my_table))
这是我的本地代码:
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
res = sc.broadcast(spark.read.table(my_table))
出现错误:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-67-dface594b1d3> in <module>
----> 1 ccode_dict = sc.broadcast(spark.read.table(my_table))
AttributeError: 'SparkSession' object has no attribute 'broadcast'
有没有替代 sc.broadcast() 的方法?
我正在使用 Databricks 连接到 运行 我在本地的代码:https://docs.databricks.com/dev-tools/databricks-connect.html
所以主要问题是,在创建 SparkSession() 时,您还创建了 SparkContext(),这意味着如果您通过以下方式创建新的 sparkContext():
sc = SparkContext()
您将新建一个与 sparkSession() 创建的 SparkContext() 冲突的新 SparkContext()。您应该做的是首先创建您的 SparkSession,然后从 SparkSession() 检索 SparkContext。这是代码:
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate() # Create Spark Session
sc = spark.sparkContext # Retrieve the Spark Context from the Spark Session
# You can now use broadcast from the spark context
res = sc.broadcast(spark.read.table(my_table))
除了从 SparkSession 中检索 sparkContext,您还可以直接如下所示获取它:
res = spark.sparkContext.broadcast(spark.read.table(my_table))