[来自 databrick 社区的交叉发布:link]
我一直在研究一个 POC 探索带 GCS 位置的 delta 实时表。
我有一些疑问:
如何访问 gcs bucket。我们必须使用数据块服务帐户建立连接。在正常的集群创建中,我们转到集群页面并在
Advanced Options
下我们提供databricks服务帐户电子邮件。对于 delta live 表,因为集群的创建不在我们的控制之下,如何将此电子邮件添加到集群以使 gcs 存储桶路径可访问。
我还尝试通过在 google 服务帐户块下添加服务帐户 sa 来从 UI 编辑增量实时表集群。保存集群失败
**Error : Dlt prefixed spark images cannot be used outside of Delta live tables service**
当我提供 gs 存储桶路径作为 delta 实时表的 storage 位置时遇到的错误日志:
DataPlaneException: Failed to start the DLT service on cluster <cluster_id>. Please check the stack trace below or driver logs for more details.
com.databricks.pipelines.execution.service.EventLogInitializationException: Failed to initialize event log
java.io.IOException: Error accessing gs://<path>
shaded.databricks.com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden
GET https://storage.googleapis.com/storage/v1/b/<path>?fields=bucket,name,timeCreated,updated,generation,metageneration,size,contentType,contentEncoding,md5Hash,crc32c,metadata
{
"code" : 403,
"errors" : [ {
"domain" : "global",
"message" : "Caller does not have storage.objects.get access to the Google Cloud Storage object. Permission 'storage.objects.get' denied on resource (or it may not exist).",
"reason" : "forbidden"
} ],
"message" : "Caller does not have storage.objects.get access to the Google Cloud Storage object. Permission 'storage.objects.get' denied on resource (or it may not exist)."
}
我们正在努力为 UI 添加更多用于配置存储权限的选项。同时,您可以通过编辑管道的 JSON 设置来控制 DLT 中使用的集群的所有属性:https://docs.databricks.com/workflows/delta-live-tables/delta-live-tables- configuration.html#cluster-configuration
首先将DBFS位置挂载到GCS云存储,请看文档
并了解如何使用 DLT 轻松构建和部署 SQL 和 Python 管道,并直接在 Google Cloud 上的 Lakehouse 上运行 ETL 工作负载。 请看文档