我希望使用 Databricks Connect 来开发 pyspark 管道。DBConnect 真的很棒,因为我能够在实际数据所在的集群上运行我的代码,因此它非常适合集成测试,但我也希望能够在开发和单元测试(pytest使用pytest-spark)期间,简单地使用本地火花环境。
有没有办法配置 DBConnect,以便对于一个用例我只需使用本地 Spark 环境,但对于另一个用例则使用 DBConnect?
我正在使用 Python 通过databricks-connect. 在墙后面,这使用了 Spark,它确实是基于 java 的,所以为了使用它,我需要 java。JDK已下载(版本14),设置为JAVA_HOME env,但是当我运行代码时,出现以下错误:
引起原因:java.lang.reflect.InaccessibleObjectException:无法使私有java.nio.DirectByteBuffer(long,int)可访问:模块java.base不会“打开java.nio”到未命名模块@bccb269
这是崩溃的代码
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
Run Code Online (Sandbox Code Playgroud)
我用谷歌搜索但找不到这个错误,我认为这不是我第一次遇到。任何想法这个错误意味着什么以及如何修复它?
我正在使用Databricks Connect从IntelliJ IDEA(Scala)在本地Azure Databricks群集中运行代码。
一切正常。我可以在IDE中本地连接,调试和检查。
我创建了一个Databricks作业来运行我的自定义应用程序JAR,但由于以下异常而失败:
19/08/17 19:20:26 ERROR Uncaught throwable from user code: java.lang.NoClassDefFoundError: com/databricks/service/DBUtils$
at Main$.<init>(Main.scala:30)
at Main$.<clinit>(Main.scala)
Run Code Online (Sandbox Code Playgroud)
我的Main.scala类的第30行是
val dbutils: DBUtils.type = com.databricks.service.DBUtils
Run Code Online (Sandbox Code Playgroud)
就像本文档页面上的描述一样
该页面显示了一种访问在本地和群集中均可使用的DBUtil的方法。但是该示例仅显示了Python,而我正在使用Scala。
以既可以使用databricks-connect在本地工作又可以在运行JAR的Databricks作业中工作的方式访问它的正确方法是什么?
更新
似乎有两种使用DBUtils的方法。
1)这里描述的DbUtils类。引用文档,此库允许您构建和编译项目,但不能运行它。这不允许您在集群上运行本地代码。
2)此处描述了 Databricks Connect 。这使您可以在Databricks集群中运行本地Spark代码。
问题在于这两种方法具有不同的设置和程序包名称。似乎没有一种在本地使用Databricks Connect的方法(在群集中不可用),但是随后通过sbt / maven添加了使用DbUtils类的jar应用程序,以便群集可以访问它。
scala databricks azure-databricks databricks-connect dbutils
我正在尝试将大小为 [2734984 行 x 11 列] 的 pyspark 数据帧转换为调用toPandas(). 虽然使用 Azure Databricks Notebook 时它完全正常工作(11 秒),java.lang.OutOfMemoryError: Java heap space但当我使用 databricks-connect(db-connect 版本和 Databricks 运行时版本匹配并且都是 7.1)运行完全相同的代码时,我遇到了异常。
我已经增加了 spark 驱动程序内存 (100g) 和 maxResultSize (15g)。我想错误出在 databricks-connect 的某个地方,因为我无法使用 Notebooks 复制它。
任何提示这里发生了什么?
错误如下:
Exception in thread "serve-Arrow" java.lang.OutOfMemoryError: Java heap space
at com.ning.compress.lzf.ChunkDecoder.decode(ChunkDecoder.java:51)
at com.ning.compress.lzf.LZFDecoder.decode(LZFDecoder.java:102)
at com.databricks.service.SparkServiceRPCClient.executeRPC0(SparkServiceRPCClient.scala:84)
at com.databricks.service.SparkServiceRemoteFuncRunner.withRpcRetries(SparkServiceRemoteFuncRunner.scala:234)
at com.databricks.service.SparkServiceRemoteFuncRunner.executeRPC(SparkServiceRemoteFuncRunner.scala:156)
at com.databricks.service.SparkServiceRemoteFuncRunner.executeRPCHandleCancels(SparkServiceRemoteFuncRunner.scala:287)
at com.databricks.service.SparkServiceRemoteFuncRunner.$anonfun$execute0$1(SparkServiceRemoteFuncRunner.scala:118)
at com.databricks.service.SparkServiceRemoteFuncRunner$$Lambda$934/2145652039.apply(Unknown Source)
at scala.util.DynamicVariable.withValue(DynamicVariable.scala:62)
at com.databricks.service.SparkServiceRemoteFuncRunner.withRetry(SparkServiceRemoteFuncRunner.scala:135)
at com.databricks.service.SparkServiceRemoteFuncRunner.execute0(SparkServiceRemoteFuncRunner.scala:113)
at com.databricks.service.SparkServiceRemoteFuncRunner.$anonfun$execute$1(SparkServiceRemoteFuncRunner.scala:86)
at com.databricks.service.SparkServiceRemoteFuncRunner$$Lambda$1031/465320026.apply(Unknown Source)
at com.databricks.spark.util.Log4jUsageLogger.recordOperation(UsageLogger.scala:210)
at com.databricks.spark.util.UsageLogging.recordOperation(UsageLogger.scala:346) …Run Code Online (Sandbox Code Playgroud) 我想做一些小型练习项目,我希望使用 databricks 集群。这能做到吗。我希望有某种方法可以通过 databricks-connect 实用程序连接 databricks 集群。只需要一些步骤。提前致谢。
apache-spark pyspark databricks databricks-connect databricks-community-edition
借助 databricks-connect,我们可以从许多 IDE 成功运行在 Databricks 或 Databricks 笔记本中编写的代码。Databricks 还创建了许多神奇命令来支持其功能,即通过添加%sql或 等命令在每个单元中运行多语言支持%md。我当前面临的一个问题是当我尝试在 Pycharm 中执行 Databricks 笔记本时,如下所示:
如何从 PyCharm 执行 Databricks 特定的魔法命令。例如,使用此命令在 Databricks 中的“完成”中导入脚本或笔记本 -
%run
'./FILE_TO_IMPORT'
Run Code Online (Sandbox Code Playgroud)
在 IDE 中工作的地方from FILE_TO_IMPORT import XYZ。
每次我下载 Databricks 笔记本时,它都会注释掉魔法命令,这使得它无法在 Databricks 环境之外的任何地方使用。
每次我想做任何开发时都转换所有的databricks magic 命令,效率真的很低。
我可以设置任何配置来自动检测 Databricks 特定的魔法命令吗?
对此的任何解决方案都会有所帮助。提前致谢!!!
我将我们的 databricks 集群更新到 Azure Databricks 上的 DBR 9.1 LTS,但是当我尝试使用 Databricks-connect 在 VS Code 中运行我经常使用的包时,会出现错误,而之前的集群则不会。之前的集群在 DBR 8.3 上运行。我也更新了该软件包以与新的 DBR 集群兼容。maven 坐标为
com.azure.cosmos.spark:azure-cosmos-spark_3-1_2-12:4.3.0。当我直接在 Databricks 笔记本中运行以下脚本时,它可以工作,但是当我使用 Databricks-connect 运行它时,出现以下错误。
# com.azure.cosmos.spark:azure-cosmos-spark_3-1_2-12:4.3.0
from pyspark.sql.types import StringType, StructField, StructType
from pyspark.sql import SparkSession
from pyspark.sql import functions as F
from pyspark.dbutils import DBUtils
spark = SparkSession.builder.appName("local").getOrCreate()
dbutils = DBUtils(spark)
cosmosEndpoint = ######################
cosmosMasterKey = ######################
cosmosDatabaseName = ######################
cosmosContainerName = "test"
cfg = {
"spark.cosmos.accountEndpoint": cosmosEndpoint,
"spark.cosmos.accountKey": cosmosMasterKey,
"spark.cosmos.database": cosmosDatabaseName,
"spark.cosmos.container": cosmosContainerName,
}
# Configure …Run Code Online (Sandbox Code Playgroud) python pyspark databricks azure-databricks databricks-connect
我正在尝试加载PyNaCl到在 Windows 上运行的 pyspark UDF。
from nacl import bindings as c
def verify_signature(msg, keys):
c.crypto_sign_ed25519ph_update(...)
...
verify_signature_udf = udf(lambda x: verify_signature(x, public_keys), BooleanType())
data_signed = data.withColumn(
"is_signature_valid", verify_signature_udf("state_values")
)
Run Code Online (Sandbox Code Playgroud)
PyNaCl已在本地安装(使用databricks-connect),但据我了解,它没有安装在执行器上。因此我得到这个:
File "/databricks/spark/python/pyspark/cloudpickle/cloudpickle.py", line 679, in subimport
__import__(name)
ModuleNotFoundError: No module named 'nacl'
Run Code Online (Sandbox Code Playgroud)
正如Python 打包中所述,我尝试像这样加载它:
File "/databricks/spark/python/pyspark/cloudpickle/cloudpickle.py", line 679, in subimport
__import__(name)
ModuleNotFoundError: No module named 'nacl'
Run Code Online (Sandbox Code Playgroud)
没有变化,同样的消息。如果我只是从 tar.gz 中提取 nacl 包并将其存储为 zip 文件并按如下方式加载:
import os
os.environ['PYSPARK_PYTHON'] = "./environment/bin/python"
spark = SparkSession.builder.config(
"spark.archives",
"pyspark_venv.tar.gz#environment").getOrCreate()
Run Code Online (Sandbox Code Playgroud)
它已加载,但我现在收到此错误: …
我尝试将我的 databricks 与我的 IDE 连接
我的机器上没有下载 Spark ad/或 scala,但我下载了 pyspark (pip install pyspark)。我构建了必要的环境变量并创建了一个文件夹 Hadoop,在其中放置了一个文件夹 bin,在其中放置了一个 winutils.exe 文件。
这是一个循序渐进的过程,缓慢而稳定地解决了我的所有错误,除了最后一个:
import logging
from pyspark.sql import SparkSession
from pyspark import SparkConf
if __name__ == "__main__":
spark = SparkSession.builder.getOrCreate()
spark.sparkContext.setLogLevel("OFF")
Run Code Online (Sandbox Code Playgroud)
给予
1/03/30 15:14:33 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Exception in thread "main" …Run Code Online (Sandbox Code Playgroud) 当尝试使用 databricks-connect 13.2.0 执行本地 Spark 代码时,它不起作用。
我有以下问题:
错误:
"INVALID_STATE: cluster xxxxx is not Shared or Single User Cluster. (requestId=05bc3105-4828-46d4-a381-7580f3b55416)""UNKNOWN:Error received from peer {grpc_message:"INVALID_STATE: cluster 0711-122239-bb999j6u is not Shared or Single User Cluster. (requestId=05bc3105-4828-46d4-a381-7580f3b55416)", grpc_status:9, created_time:"2023-07-11T15:26:08.9729+02:00"}"该集群是共享的,我尝试了几种集群配置,但它不起作用!集群运行时版本为13.2。
另外,我使用:
有人对新的 databricks connect 遇到过类似的问题吗?
感谢帮助!
我尝试了以下代码:
from databricks.connect import DatabricksSession
from pyspark.sql.types import *
from delta.tables import DeltaTable
from datetime import date
if __name__ == "__main__":
spark = DatabricksSession.builder.getOrCreate()
# Create a Spark DataFrame consisting …Run Code Online (Sandbox Code Playgroud) 我正在尝试将 BigQuery 数据集连接到 Databrick 并使用 Pyspark 运行脚本。
我做过的程序:
我将 BigQuery Json API 修补到 dbfs 中的 databrick 以进行连接访问。
然后我在集群库中添加了spark-bigquery-latest.jar并运行了我的脚本。
当我运行这个脚本时,我没有遇到任何错误。
from pyspark.sql import SparkSession
spark = (
SparkSession.builder
.appName('bq')
.master('local[4]')
.config('parentProject', 'google-project-ID')
.config('spark.jars', 'dbfs:/FileStore/jars/jarlocation.jar') \
.getOrCreate()
)
df = spark.read.format("bigquery").option("credentialsFile", "/dbfs/FileStore/tables/bigqueryapi.json") \
.option("parentProject", "google-project-ID") \
.option("project", "Dataset-Name") \
.option("table","dataset.schema.tablename") \
.load()
df.show()
Run Code Online (Sandbox Code Playgroud)
但是我没有尝试调用该模式中的单个表,而是尝试使用如下查询来调用其下的所有表:
from pyspark.sql import SparkSession
from google.cloud import bigquery
spark = (
SparkSession.builder
.appName('bq')
.master('local[4]')
.config('parentProject', 'google-project-ID')
.config('spark.jars', 'dbfs:/FileStore/jars/jarlocation.jar') \
.getOrCreate()
)
client = bigquery.Client()
table_list = 'dataset.schema'
tables …Run Code Online (Sandbox Code Playgroud) google-bigquery apache-spark pyspark databricks databricks-connect
我已将 Azure Databricks 群集从运行时 5.5LTS 更新到 7.3LTS。现在我在 VSCode 中调试时遇到错误。我已经更新了我的 Anaconda 连接,如下所示:
> conda create --name dbconnect python=3.7
> conda activate dbconnect
> pip uninstall pyspark
> pip install -U databricks-connect==7.3.*
> databricks-connect configure
> databricks-connect test
Run Code Online (Sandbox Code Playgroud)
到目前为止一切顺利,但现在我正在尝试调试以下内容
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
setting = spark.conf.get("spark.master")
if "local" in setting:
from pyspark.dbutils import DBUtils
dbutils = DBUtils(spark.sparkContext)
Run Code Online (Sandbox Code Playgroud)
在 上dbutils = DBUtils(spark.sparkContext),它抛出异常
发生异常:AttributeError“SparkContext”对象没有属性“conf”
我尝试过创建conf
from pyspark.dbutils import DBUtils
import pyspark
conf = pyspark.SparkConf()
pyspark.SparkContext.getOrCreate(conf=conf)
dbutils = DBUtils(spark.sparkContext) …Run Code Online (Sandbox Code Playgroud) databricks ×11
pyspark ×7
python ×6
apache-spark ×3
azure ×1
databricks-community-edition ×1
dbutils ×1
java ×1
pandas ×1
pycharm ×1
pynacl ×1
python-3.x ×1
scala ×1