提问者:小点点

将存储帐户Azure转换为Database ricks增量表


我刚刚将 Azure 存储帐户(存储第 2 代)及其基础容器链接到我的 Databricks 环境。存储帐户内有两个容器,每个容器都有一些子目录。文件夹内是.csv文件。

我已将具有 Azure 博客数据参与者访问权限的 Azure 服务主体连接到数据砖中的存储帐户,以便可以读取和写入存储帐户。

我正在尝试找出将现有存储帐户转换为delta湖(metastore中的表将文件转换为拼花(delta表))的最佳方法。

最简单的方法是什么?

作为初学者,我天真的方法可能是

>

  • 使用 spark.read.format(“csv).load(”{container}@{storage}..../directory) 读取文件夹

    使用df.write.format("delta ")写入一个具有类似名称的新文件夹(因此,如果文件夹是directory,则将其写入directory_parquet)。保存({容器} @ {存储}.../directory_parquet)

    然后不确定最后的步骤?这将创建一个包含新文件集的新文件夹。但这不会是蜂巢存储中出现的数据块表。但我有拼花文件。

    或者,我可以使用 df.write.format().saveAsTable(“tablename”),但这不会在存储帐户中创建表,而是在 databricks 文件系统中创建表,但确实显示在 hive 元存储中。

    最好这可以在Database ricks工作簿中使用python作为首选,或者在必要时使用scala/sql来完成。

    *作为一种可能的解决方案,如果为此付出的努力是巨大的,只需转换为拼花,并将每个子文件夹的表信息转换为蜂巢存储格式:数据库=容器名称tableName=子目录名称

    文件夹结构目前相当平坦,因此只有rootcontainer/Subfolders的深度。


  • 共1个答案

    匿名用户

    也许你正在寻找一张外部桌子:

    df.write.format("delta").option("path", "some/external/path").saveAsTable("tablename") 
    

    这篇文章提供了有关外部表与托管表的更多信息。