我刚刚将 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的深度。
也许你正在寻找一张外部桌子:
df.write.format("delta").option("path", "some/external/path").saveAsTable("tablename")
这篇文章提供了有关外部表与托管表的更多信息。