通常我使用下面的 URL 将文件从 Databricks DBFS FileStore 下载到我的本地计算机。
*https://<MY_DATABRICKS_INSTANCE_NAME>/fileStore/?o=<NUMBER_FROM_ORIGINAL_URL>*
Run Code Online (Sandbox Code Playgroud)
然而,这次文件没有下载,URL 而是将我引导至 Databricks 主页。有人对如何将文件从 DBFS 下载到本地有任何建议吗?或者应该如何修复 URL 以使其正常工作?
任何建议将不胜感激!
八打灵再也
我尝试将“small_radio_json.json”加载到 Delta Lake 表。在此代码之后我将创建表。
我尝试创建 Delta 表,但收到错误“写入 Delta 表时检测到架构不匹配”。可能与分区有关 events.write.format("delta").mode("overwrite").partitionBy("artist").save("/delta/events/")
如何修复或修改代码。
//https://learn.microsoft.com/en-us/azure/azure-databricks/databricks-extract-load-sql-data-warehouse
//https://learn.microsoft.com/en-us/azure/databricks/_static/notebooks/delta/quickstart-scala.html
//Session configuration
val appID = "123558b9-3525-4c62-8c48-d3d7e2c16a6a"
val secret = "123[xEPjpOIBJtBS-W9B9Zsv7h9IF:qw"
val tenantID = "12344839-0afa-4fae-a34a-326c42112bca"
spark.conf.set("fs.azure.account.auth.type", "OAuth")
spark.conf.set("fs.azure.account.oauth.provider.type",
"org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider")
spark.conf.set("fs.azure.account.oauth2.client.id", "<appID>")
spark.conf.set("fs.azure.account.oauth2.client.secret", "<secret>")
spark.conf.set("fs.azure.account.oauth2.client.endpoint", "https://login.microsoftonline.com/<tenant-
id>/oauth2/token")
spark.conf.set("fs.azure.createRemoteFileSystemDuringInitialization", "true")
//Account Information
val storageAccountName = "mydatalake"
val fileSystemName = "fileshare1"
spark.conf.set("fs.azure.account.auth.type." + storageAccountName + ".dfs.core.windows.net", "OAuth")
spark.conf.set("fs.azure.account.oauth.provider.type." + storageAccountName +
".dfs.core.windows.net", "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider")
spark.conf.set("fs.azure.account.oauth2.client.id." + storageAccountName + ".dfs.core.windows.net",
"" + appID + "")
spark.conf.set("fs.azure.account.oauth2.client.secret." + storageAccountName +
".dfs.core.windows.net", "" + secret …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 Databricks 中的 Python 笔记本中将自己的日志文件写入 Azure Datalake Gen 2。我试图通过使用 Python 日志记录模块来实现这一点。
不幸的是我不能让它工作。不会引发错误,会创建文件夹,但不会创建包含日志内容的文件。即使文件存在,也不会写入任何内容。
本地 python 脚本工作正常,但我无法在 Databricks 中使用它。
这是我的代码:
# mount
if not any(mount.mountPoint == '/mnt/log' for mount in dbutils.fs.mounts()):
dbutils.fs.mount(
source = "abfss://log@datalake.dfs.core.windows.net/",
mount_point = "/mnt/log",
extra_configs = configs)
# vars
folder_log = '/mnt/log/test/2019'
file_log = '201904.log'
# add folder if not existent
dbutils.fs.mkdirs(folder_log)
# setup logging
import logging
logging.basicConfig(
filename=folder_log+'/'+file_log,
format='%(asctime)s | %(name)s | %(levelname)s | %(message)s',
datefmt='%Y-%m-%d %H:%M:%S UTC (%z)',
level=logging.NOTSET
)
# test
logging.info('Hello World.')
Run Code Online (Sandbox Code Playgroud)
安装似乎没问题。
使用 …
我正在探索将表加入到自身时 Spark 的行为。我正在使用数据块。
我的虚拟场景是:
将外部表读取为数据帧 A(底层文件采用 delta 格式)
将数据框 B 定义为仅选择某些列的数据框 A
在 column1 和 column2 上连接数据框 A 和 B
(是的,这没有多大意义,我只是在尝试了解 Spark 的底层机制)
a = spark.read.table("table") \
.select("column1", "column2", "column3", "column4") \
.withColumn("columnA", lower((concat(col("column4"), lit("_"), col("column5")))))
b = a.select("column1", "column2", "columnA")
c= a.join(b, how="left", on = ["column1", "column2"])
Run Code Online (Sandbox Code Playgroud)
我的第一次尝试是按原样运行代码(尝试 1)。然后我尝试重新分区和缓存(尝试 2)
a = spark.read.table("table") \
.select("column1", "column2", "column3", "column4") \
.withColumn("columnA", lower((concat(col("column4"), lit("_"), col("column5")))))
.repartition(col("column1"), col("column2")).cache()
Run Code Online (Sandbox Code Playgroud)
最后,我重新分区、排序和缓存
a = spark.read.table("table") \
.select("column1", "column2", "column3", "column4") \
.withColumn("columnA", lower((concat(col("column4"), lit("_"), col("column5"))))) …Run Code Online (Sandbox Code Playgroud) 我正在 Azure DataFactory 中处理一个项目,并且有一个运行 Databricks python 脚本的管道。这个特定的脚本位于 Databricks 文件系统中并由 ADF 管道运行,它从位于同一文件夹中的另一个 python 脚本导入模块(两个脚本都位于 中dbfs:/FileStore/code)。
下面的代码可以将 python 模块导入到 Databricks 笔记本中,但在导入到 python 脚本中时不起作用。
sys.path.insert(0,'dbfs:/FileStore/code/')
import conn_config as Connect
Run Code Online (Sandbox Code Playgroud)
在集群日志中,我得到: Import Error: No module named conn_config
我猜这个问题与python文件无法识别Databricks环境有关。有什么帮助吗?
python azure-data-factory azure-pipelines databricks azure-databricks
我正在解析一个 XML 字符串,并使用 Jackson 库中的a将其转换为JsonNodeScala 中的a。XmlMapper我在 Databricks 笔记本上编码,因此编译是在云集群上完成的。编译我的代码时,我收到了这个错误java.lang.NoSuchMethodError: com.fasterxml.jackson.dataformat.xml.XmlMapper.coercionConfigDefaults()Lcom/fasterxml/jackson/databind/cfg/MutableCoercionConfig;,其中有一百行“at com.databricks. ...”
我可能忘记导入一些东西,但对我来说这没关系(如果我错了请告诉我):
import ch.qos.logback.classic._
import com.typesafe.scalalogging._
import com.fasterxml.jackson._
import com.fasterxml.jackson.core._
import com.fasterxml.jackson.databind.{ObjectMapper, JsonNode}
import com.fasterxml.jackson.dataformat.xml._
import com.fasterxml.jackson.module.scala._
import com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper
import java.io._
import java.time.Instant
import java.util.concurrent.TimeUnit
import javax.xml.parsers._
import okhttp3.{Headers, OkHttpClient, Request, Response, RequestBody, FormBody}
import okhttp3.OkHttpClient.Builder._
import org.apache.spark._
import org.xml.sax._
Run Code Online (Sandbox Code Playgroud)
由于我使用的是 Databricks,因此没有依赖项的 SBT 文件。相反,我直接在集群上安装了我需要的库。这是我正在使用的:
com.squareup.okhttp:okhttp:2.7.5
com.squareup.okhttp3:okhttp:4.9.0
com.squareup.okhttp3:okhttp:3.14.9
org.scala-lang.modules:scala-swing_3:3.0.0
ch.qos.logback:logback-classic:1.2.6
com.typesafe:scalalogging-slf4j_2.10:1.1.0
cc.spray.json:spray-json_2.9.1:1.0.1
com.fasterxml.jackson.module:jackson-module-scala_3:2.13.0
javax.xml.parsers:jaxp-api:1.4.5
org.xml.sax:2.0.1
Run Code Online (Sandbox Code Playgroud)
导致错误的代码很简单(来自这里: https: //www.baeldung.com/jackson-convert-xml-json第 5 章):
com.squareup.okhttp:okhttp:2.7.5
com.squareup.okhttp3:okhttp:4.9.0
com.squareup.okhttp3:okhttp:3.14.9
org.scala-lang.modules:scala-swing_3:3.0.0 …Run Code Online (Sandbox Code Playgroud) 在以下示例代码中,在one cell我们的Azure Databricks笔记本中,代码将大约 2000 万条记录从 加载到Python pandas 中,通过应用一些函数执行一些数据帧列转换(如下面的代码片段所示)。但运行代码大约半小时后,Databricks 抛出以下错误:dataframeAzure SQL db
错误:
ConnectException: Connection refused (Connection refused)
Error while obtaining a new communication channel
ConnectException error: This is often caused by an OOM error that causes the connection to the Python REPL to be closed. Check your query's memory usage.
Run Code Online (Sandbox Code Playgroud)
备注:表大约有 150 列。Databricks上的集群Spark setting如下
:128 GB , 16 Cores, DBR 8.3, Spark 8.3, Scala 2.12
问题 …
python pandas apache-spark azure-sql-database azure-databricks
我试图清楚地了解它们是如何相互关联的,以及使用其中一个是否总是需要使用另一个。如果您可以对它们中的每一个给出非技术性的定义或解释,我将不胜感激。请不要粘贴两者的技术定义。我不是软件工程师、数据分析师或数据工程师。
我们正在 Azure Databricks 中尝试 Unity 目录。我们将预先存在的工作区连接到新的元存储。
我创建了一个新目录。当我运行笔记本并尝试写入表“myfirstcatalog.bronze.mytable”时,出现错误
[UC_NOT_ENABLED] 此集群上未启用 Unity Catalog。
我已经在预先存在的集群和新集群上运行了这个。
我试过这个%fs ls dbfs:/mnt,但我想知道这会给我所有的挂载点吗?
azure-databricks ×10
databricks ×5
apache-spark ×3
python ×3
scala ×3
delta-lake ×2
azure ×1
bigdata ×1
data-science ×1
database ×1
jackson ×1
logging ×1
pandas ×1
pyspark ×1
xmlmapper ×1