【问题标题】:How to Data to an existing delta table in databricks?如何将数据写入数据块中的现有增量表?
【发布时间】:2022-07-05 22:31:28
【问题描述】:

我在 ADLS gen2 中有镶木地板格式的数据。我想在我的项目中实现 dalta 层。 因此,我通过 ADF 将 ADLS Gen2 中的所有本地数据保存在一个称为着陆区的单独容器中。

现在我创建了一个名为 Bronze 的单独容器,我想在其中保留 delta 表。 为此,我做了下面的事情。 我在databricks中创建了一个数据库。我已经使用下面的 SQL 代码在数据块中创建了一个增量表。

create table if not exists externaltables.actv_snap_view(
id String,
mbr_id String,
typ_id String,
strt_dttm String,
otcome_typ_id String,
cdc String
)
using delta
location '/mnt/Storage/Bronze/actv_snap_view'

现在我的表没有任何数据了。

  1. 如何将数据湖登陆区域中的数据添加到我创建的增量表中。
  2. 将数据添加到将存储带下划线数据的表后,我的数据库位于数据块中。

【问题讨论】:

  • 如果 externaltables.actv_snap_view 是您的目标表,那么您可以将 parquet insert 中的数据插入 externaltables.actv_snap_view select * from parquet.your adls location 您的 adls 位置应包含在反引号内
  • 在创建数据库时,如果您可以指定指向您的广告的位置,那么将在那里创建数据库。同样,如果为表指定位置,则数据将被复制到那里。
  • 如果未指定位置,则将其复制到默认 /dbfs 位置

标签: databricks azure-databricks delta-lake


【解决方案1】:

您可以按照以下步骤使用来自landingzone(parquet 文件的来源)的数据创建表,其中该表属于存在于bronze 容器中的数据库。

  • 考虑到您的 ADLS 容器已安装,您可以创建一个数据库并将其位置指定为您的 bronze 容器安装点,如 @Ganesh Chandrasekaran 所建议的那样。
create database demo location "/mnt/bronzeoutput/" 
  • 现在使用以下 SQL 语法,使用 landingzone 容器的挂载点中存在的 parquet 文件创建表。
create table demo.<table_name> (<columns>) using parquet location '/mnt/landingzoneinput/<parquet_file_name>'; 

使用上述步骤,您已经在bronze 容器中创建了一个数据库,您可以在其中存储您的表。要填充在 bronze 容器的此数据库中创建的表,您将使用 landingzone 容器中存在的文件。

更新:

  • 使用上面的create table 语句正在创建一个包含来自 parquet 文件的数据的表,但该表不会反映在数据湖中。

  • 您可以改用下面给出的查询。它首先在数据库中创建一个表(存在于bronze 容器中)。现在,您可以按照@Ganesh Chandrasekaran 的建议插入landingzone 中存在的镶木地板文件中的值

create table demo.<table_name> (<columns>);
-- demo database is inside bronze container

insert into demo.<table_name> select * from <data_source>.`/mnt/landingzoneinput/source_file`

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-03
    • 1970-01-01
    • 2022-07-26
    • 2021-09-30
    • 2014-03-21
    • 1970-01-01
    • 1970-01-01
    • 2018-11-21
    相关资源
    最近更新 更多