标签: azure-databricks

DBFS 未显示在 databricks UI 上

我是 Azure 的新手。我正在尝试将 blob 存储容器安装到 databricks 文件系统。我已经遵循了一些教程,但虽然无法在 databricks UI 上找到 DBFS 来上传文件。

我尝试了下面的代码

dbutils.fs.mount(
  source = "wasbs://<container-name>@<storage-account-name>.blob.core.windows.net",
  mount_point = "/mnt/<mount-name>",
  extra_configs = {"<conf-key>":dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")})
Run Code Online (Sandbox Code Playgroud)

azure-databricks

4
推荐指数
1
解决办法
3291
查看次数

从 Databricks 挂载 ADLS Gen 2 abfss 时出错:错误 IllegalArgumentException:不支持的 Azure 方案:abfss

我修改了 @Bhagyashree 善意提供的一些代码,试图在 ADLS Gen 2 上安装 abfss

container_name = "root"
storage_account = "mystorageaccount"
key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

url = "abfss://" + container_name + "@" + storage_account + ".dfs.core.windows.net/"
config = "fs.azure.account.key." + storage_account + ".blob.core.windows.net"

mount_folder = "/mnt/lake"
mounted_list = dbutils.fs.mounts()

mounted_exist = False
for item in mounted_list:
  if mount_folder in item[0]:
    mounted_exist = True
    break

  if not mounted_exist:
    dbutils.fs.mount(source = url, mount_point = mount_folder, extra_configs = {config : key})
Run Code Online (Sandbox Code Playgroud)

目标是实现如下所示的安装

在此输入图像描述

但我得到了错误

IllegalArgumentException: Unsupported Azure Scheme: abfss
Run Code Online (Sandbox Code Playgroud)

关于为什么我收到错误有什么想法吗?

databricks azure-databricks

4
推荐指数
1
解决办法
1991
查看次数

无法使用 databricks-connect“V2”V.13.2 访问 databricks 集群

当尝试使用 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。

另外,我使用:

  • Python 3.10
  • openjdk版本“1.8.0_292”
  • Azure 数据块

有人对新的 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)

python azure databricks azure-databricks databricks-connect

4
推荐指数
1
解决办法
2023
查看次数

如何启用 Databricks Delta 功能

将我的 Azure Databricks 从标准升级到主要,尝试开始使用 Databricks Delta:

create table t
using delta
as select * from test_db.src_data;
Run Code Online (Sandbox Code Playgroud)

您的帐户中未启用 Databricks Delta。请联系您的客户经理,讨论如何使用 Delta;

我是客户经理,但找不到此设置。它在哪里?

databricks azure-databricks delta-lake

3
推荐指数
1
解决办法
4318
查看次数

合并数据串和时间串

你会怎么做?数据块 4.1、Spark 2.3

您将获得一个两列数据框:1) ' dt', 字符串,如图所示。2) ' tm' 字符串,如图所示。我为这篇文章添加了第三列。

您的工作是创建第 3 列,“ dttm”、时间戳、格式。前导零、精度和时区并不像 id 正确组合 ' dt' & ' tm' 重要。

我在这篇文章中使用了 PySpark,但我并没有与之结婚。

df1 = sqlContext.createDataFrame(
  [
     ('2018-06-02T00:00:00','12:30:00 AM', '06-02-2018 00:30:00.000+0000')
    ,('2018-11-15T00:00:00','03:00:00 AM', '11-15-2018 03:00:00.000+0000')
    ,('2018-06-02T00:00:00','10:30:00 AM', '06-02-2018 10:30:00.000+0000')
    ,('2018-06-02T00:00:00','12:30:00 PM', '06-02-2018 12:30:00.000+0000')
    ,('2018-11-15T00:00:00','03:00:00 PM', '11-15-2018 15:00:00.000+0000')
    ,('2018-06-02T00:00:00','10:30:00 PM', '06-02-2018 22:30:00.000+0000')
  ]
  ,['dt', 'tm', 'desiredCalculatedResult']
)
Run Code Online (Sandbox Code Playgroud)

我已经经历了几十个、几十个、几十个例子和尝试,到目前为止我没有找到最终可行的解决方案。

dataframe databricks azure-databricks

3
推荐指数
1
解决办法
2231
查看次数

Databricks - 如何将驱动程序日志复制到我的机器?

我可以在 databricks 驱动程序节点上使用 %sh 命令查看日志。如何将它们复制到我的 Windows 机器上进行分析?

%sh cd eventlogs/4246832951093966440 gunzip eventlog-2019-07-22--14-00.gz ls -l head -1 eventlog-2019-07-22--14-00 Version":"2.4.0","时间戳":1563801898572,"翻转次数":0,"SparkContext Id":4246832951093966440}

谢谢

databricks azure-databricks

3
推荐指数
1
解决办法
1270
查看次数

使用 selectExpr 选择包含特殊字符的 spark 数据框列

我的情况是我的列名称Município在字母上带有重音í

我的selectExpr命令因此而失败。有办法解决吗?基本上我有类似下面的表达式:

.selectExpr("...CAST (Município as string) as Município...")
Run Code Online (Sandbox Code Playgroud)

我真正想要的是能够让列的名称与它来时的名称相同,所以将来我不会在不同的表/文件上出现这种问题。

如何让 spark 数据框接受重音或其他特殊字符?

special-characters apache-spark-sql pyspark azure-databricks

3
推荐指数
1
解决办法
4595
查看次数

如何使用笔记本中的某些命令在数据块集群上安装库?

实际上我想在我的 Azure 数据块集群上安装一个库,但我不能使用 UI 方法。这是因为每次我的集群发生变化和过渡时,我都无法使用 UI 向其中添加库。是否有任何用于执行此操作的 databricks 实用程序命令?

databricks azure-databricks

3
推荐指数
2
解决办法
8618
查看次数

如何向 Delta Lake 表添加新列?

我正在尝试向在 Azure Blob 存储中存储为增量表的数据添加一个新列。对数据执行的大多数操作都是 upserts,有很多更新和很少的新插入。我写数据的代码目前看起来像这样:

DeltaTable.forPath(spark, deltaPath)
      .as("dest_table")
      .merge(myDF.as("source_table"),
             "dest_table.id = source_table.id")
      .whenNotMatched()
      .insertAll()
      .whenMatched(upsertCond)
      .updateExpr(upsertStat)
      .execute()
Run Code Online (Sandbox Code Playgroud)

这些文档来看,Delta Lake 似乎只支持在insertAll()updateAll()调用上添加新列。但是,我仅在满足某些条件并希望将新列添加到所有现有数据(默认值为null)时才进行更新。

我想出了一个看起来非常笨拙的解决方案,我想知道是否有更优雅的方法。这是我目前提出的解决方案:

// Read in existing data
val myData = spark.read.format("delta").load(deltaPath)
// Register table with Hive metastore
myData.write.format("delta").saveAsTable("input_data")

// Add new column
spark.sql("ALTER TABLE input_data ADD COLUMNS (new_col string)")

// Save as DataFrame and overwrite data on disk
val sqlDF = spark.sql("SELECT * FROM input_data")
sqlDF.write.format("delta").option("mergeSchema", "true").mode("overwrite").save(deltaPath)
Run Code Online (Sandbox Code Playgroud)

apache-spark databricks azure-databricks delta-lake

3
推荐指数
2
解决办法
4152
查看次数

尝试通过 Active Directory 访问 Azure Databricks API 时出现错误 403 用户未获授权

我一直在关注文档:https : //docs.microsoft.com/en-us/azure/databricks/dev-tools/api/latest/aad/service-prin-aad-token

创建服务主体并使用它来访问 Databricks。我已经配置了一个 databricks 工作区并使用它来创建一个集群。然后我按照文档中提到的过程,创建了一个服务主体并获得了两个令牌:AD访问令牌和管理访问令牌。但是,我无法使用 API。

配置后最终调用cURL命令:

curl -X GET \
-H 'Authorization: Bearer <access-token>' \
-H 'X-Databricks-Azure-SP-Management-Token: <management-access-token>' \
-H 'X-Databricks-Azure-Workspace-Resource-Id: /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Databricks/workspaces/<workspace-name>' \
https://<databricks-instance>/api/2.0/clusters/list
Run Code Online (Sandbox Code Playgroud)

代入代币和其他信息后,结果如下:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title>Error 403 User not authorized.</title>
</head>
<body><h2>HTTP ERROR 403</h2>
<p>Problem accessing /api/2.0/clusters/list. Reason:
<pre>    User not authorized.</pre></p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我已经尝试了一些方法来解决这个问题,即更改原始访问令牌请求以使用使用authorization_code授权类型等的交互流,但这只会给我一个Invalid access token错误。

上面的配置有问题吗?我是否缺少一些权限?

更新:来到访问控制 (IAM) 页面,该应用程序似乎没有包含在那里。

azure oauth-2.0 azure-active-directory azure-databricks

3
推荐指数
1
解决办法
1706
查看次数