首次将数据导入Delta Lake

开始进行ETL数据注入到Delta Lake——Databricks博客的解说。

使用类似于Kafka一直运行的流式处理平台来导入数据,需要追踪哪些文件尚未导入,因此变得复杂且困难。本文将讨论将数据从数据湖文件夹导入Delta Lake表的两种方法,即自动加载器和COPY INTO。这两个功能使得我们无需使用像Kafka这样的分布式实时流数据系统,就可以以幂等方式从数据湖文件夹直接增量导入数据,对于数据工程师尤其有用。除了大大简化了增量ETL过程,还可以高效地导入数据,因为它只导入新数据,而不是重新处理现有数据。

在这里,我们已经提到了两个概念,即幂等性和增量ETL。让我们来看看它们分别意味着什么。

べき等性(Idempotent)は、同じデータを処理する際には、常に同じ結果を生み出すことを意味します。例えば、エレベーターのボタンはべき等性があると言えます。あなたが11階のボタンを押し、その後にエレベーターに入ってきた他の人も同じ階のボタンを押すことができます。これら全ての11階ボタンのプッシュは同じデータですので、処理は一度のみとなります。しかし、他の誰かが3階のボタンを押したら、これは新たなデータとなるので、それに応じた処理が行われます。 誰が押したのか、どの階に到着するのかに関係なく、特定の階のボタンを押し、対応する階に移動するということは、常に同じ結果をもたらします。

インクリメンタルETL – べき等性はインクリメンタルETLの基礎となります。新たなデータのみがインクリメンタルに処理されるので、インクリメンタルETLは非常に効率的です。インクリメンタルETLはべき等性のあるデータ取り込みからスタートし、BIと機械学習で利用するゴールドテーブルに至るまで、この特性を複数のステージングテーブルと変換処理に適用していきます。

以下是增量ETL架构。本文将重点介绍如何从外部源将数据导入表格,如左图所示。

复制到

COPY INTO是一个将数据从文件夹加载到Delta Lake表的SQL命令。下面的代码片段展示了如何轻松地将源文件夹ingestLandingZone中的JSON文件复制到目标Delta Lake表ingestCopyIntoTablePath中。

以下是一些需要注意的事项。

    • データソースに少数(数千)のファイルが存在する場合には、COPY INTOコマンドは、スケジュール処理、アドホックの取り込みにおいては完璧なものとなります。

 

    • サポートしているファイルフォーマットは、JSON、CSV、AVRO、ORC、PARQUET、TEXT、バイナリーファイルです。

 

    • 上の例のように、取り込み先にはデータベース上の既存Delta Lakeテーブルや、Delta Lakeテーブルの位置を指定することができます。

 

    ノートブックでCOPY INTOを使えるだけでなく、Databricks SQLでデータを取り込むのもベストな方法です。

自动装载机

Auto Loader通过使用目录列表和文件通知来提供将文件夹中的新数据导入Delta Lake表的Python和Scala方法。Auto Loader是Apache Spark™结构化流处理的数据源,但不需要持续运行。如下所讨论的那样,您也可以使用触发一次的选项将处理切换为作业,并在处理后关闭。目录列表方法监视目录中的文件,并确定新文件或上次处理后更新的文件。该方法是默认选项,并且对于文件夹中文件数量较少的情况下是一个理想的选择。在其他情况下,文件通知方法将利用云服务发送通知,以通知新文件的出现和更新。

检查点会在ETL停止时保存状态。通过利用检查点,可以使自动加载程序持续运行,并将其纳入定期和调度作业的一部分。当自动加载程序停止并重新启动时,可以使用检查点来恢复到最新状态,而无需重新处理已处理过的文件。在以下示例中,设置了“trigger once”选项作为控制自动加载作业的其他方法。这意味着在作业开始后,仅执行一次作业,并在处理完所有新数据后停止作业。

以下的设置由这个自动加载器完成。

    • cloudFilesストリームの設定

 

    • 期待されるファイルフォーマットの特定

 

    • スキーマ情報の場所の指定

 

    • 新規データをチェックする場所の指定

 

    • 指定されたフォーマットでファイルを書き出し

 

    • このオートローダーは一度のみの実行

 

    新規データを格納するテーブルの指定

默认情况下,模式将被推断,但也可以像上面的示例一样明确设置模式。在本系列文章的下一篇中,我们会详细介绍模式推断、模式演变以及数据救援等内容。

总结起来

在Databricks中,我们每天都在努力实现不可能的事情,将困难变得容易。COPY INTO和自动加载器可以简化调度ETL和持续ETL中的增量数据加载。现在,您已经准备好使用COPY INTO和自动加载器了。期待看到您用它们来创建什么!

请下载示例笔记本。

Databricks 免费试用

Databricks 免费试用

广告
将在 10 秒后关闭
bannerAds