我是 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) 我修改了 @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-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) 将我的 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;
我是客户经理,但找不到此设置。它在哪里?
你会怎么做?数据块 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)
我已经经历了几十个、几十个、几十个例子和尝试,到目前为止我没有找到最终可行的解决方案。
我可以在 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}
谢谢
我的情况是我的列名称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
实际上我想在我的 Azure 数据块集群上安装一个库,但我不能使用 UI 方法。这是因为每次我的集群发生变化和过渡时,我都无法使用 UI 向其中添加库。是否有任何用于执行此操作的 databricks 实用程序命令?
我正在尝试向在 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) 我一直在关注文档: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-databricks ×10
databricks ×7
azure ×2
delta-lake ×2
apache-spark ×1
dataframe ×1
oauth-2.0 ×1
pyspark ×1
python ×1