在 Databricks 中将云数据源注册为全局表而不进行复制

Posted

技术标签:

【中文标题】在 Databricks 中将云数据源注册为全局表而不进行复制【英文标题】:Registering a cloud data source as global table in Databricks without copying 【发布时间】:2020-11-21 12:16:08 【问题描述】:

鉴于我在 Azure 存储中有一个 Delta 表:

wasbs://mycontainer@myawesomestorage.blob.core.windows.net/mydata

这可从我的 Databricks 环境中获得。我现在希望通过全局表获得这些数据,自动加载到所有集群并在“数据”部分中可见。

我可以通过复制轻松做到这一点:

spark.read\
  .load("wasbs://mycontainer@myawesomestorage.blob.core.windows.net/mydata")\
  .write.saveAsTable("my_new_table")

但这很昂贵,我需要偶尔运行它(不过,结构化流式传输会有所帮助)。 但是是否可以直接将源注册为全局表,而不必复制所有文件

【问题讨论】:

【参考方案1】:

您可以在 databricks 笔记本单元格中使用 CREATE TABLE USING 语句:

%sql

CREATE TABLE IF NOT EXISTS default.my_new_table 
  USING DELTA 
  LOCATION "wasbs://mycontainer@myawesomestorage.blob.core.windows.net/mydata"

my_new_table 应该出现在 databricks 数据选项卡中的默认数据库中。

【讨论】:

这就是我想要的。谢谢:-)

以上是关于在 Databricks 中将云数据源注册为全局表而不进行复制的主要内容,如果未能解决你的问题,请参考以下文章

企业版Spark Databricks + 企业版Kafka Confluent 联合高效挖掘数据价值

如何在databricks sql中将字符串转换为日期

如何在 Azure Databricks SQL 中将字段值转换为逗号分隔

如何在 Azure Databricks 中使用 JDBC 从 PostgreSQL 读取表数据?

在 Databricks 中将字符串从 SCALA 传递到 Python

在 spark sql 中将字符串类型转换为数组类型