データ処理とジョブスケジューリングのためのApache AirflowまたはApache Beam
質問
有益な情報を提供したいのですが、データエンジニアには程遠いです。
私は現在、多くの入力(現在CSVとExcelファイル)を持つ私のデータに対して、長い一連の変換を実行するためにpythonライブラリpandasを使用しています。出力は、いくつかのエクセルファイルです。私は、並列計算(私がpandasで行っているほど逐次的ではないという意味です)でスケジュールされた監視バッチジョブを、月に1回実行できるようにしたいと思います。
私はBeamまたはAirflowをよく知らないのですが、ドキュメントをざっと読んでみたところ、どちらもそれを達成できるようです。どちらを使うべきでしょうか?
どのように解決するのですか?
他の回答は、かなり専門的で理解するのが難しいです。私も以前は同じ立場でしたので、以下のように説明します。 簡単な言葉で説明します。 .
エアフロー
できること
何でも
. それは
BashOperator
と
PythonOperator
であり、bashスクリプトやPythonスクリプトを実行できることを意味します。
データパイプラインの整理(複雑なデータパイプラインのDAGの設定)、スケジュール、監視、再実行のトリガーなどを、見やすく使いやすいUIで行うことができる方法です。
また、セットアップも簡単で、すべて使い慣れたPythonのコードで行うことができます。
パイプラインを組織的に行う(つまりAirflowを使う)ことは、データ処理の混乱をデバッグするのに時間を浪費しないことを意味します(
cron
)スクリプトをあちこちでデバッグする時間を無駄にしない。
現在では(だいたい2020年以降)、これを
オーケストレーション
ツールになります。
Apache Beam
は、多くのデータ処理フレームワーク(Spark, Flinkなど)のラッパーである。
Beamを学ぶだけで、複数のバックエンド(Beamランナー)で実行できるようにすることを意図しています。
KerasやTensorFlow/Theano/Torchをご存知の方は、Kerasとそのバックエンドの関係は、Beamとそのデータ処理のバックエンドの関係に似ています。
Google Cloud PlatformのCloud Dataflowは、Beamを実行するための1つのバックエンドです。
彼らはそれを
データフローランナー
.
GCPの提供する クラウドコンポーザー は マネージドAirflowの実装です。 をサービスとして提供し、Google Kubernetes Engine (GKE) の Kubernetes クラスタで動作します。
つまり、どちらかです。
- 手動でAirflowを実装し、インスタンス自体でデータ処理を行う(データが小さい(またはインスタンスが十分に強力である)場合、Airflowを実行しているマシンでデータ処理を行うことができます)。これは、多くの場合、Airflowがデータを処理できるかどうか混乱している理由です)
- Beamジョブを呼び出す手動Airflow実装
- Cloud Composer (サービスとして管理されたAirflow)がCloud Dataflowのジョブを呼び出すこと
-
Cloud ComposerのKubernetesクラスタ環境自体でデータ処理コンテナを実行するCloud Composerは、Airflowの
KubernetesPodOperator (KPO)
-
Cloud ComposerのKubernetesクラスタ環境でデータ処理用コンテナを実行し、Airflowの
KPO
が、今回はより良い 孤立した を指定することで、より優れた方式を実現しました。KPO
ポッドが新しいノードプールで実行されるように指定します。
私の個人的な経験
:
Airflowは軽量で学習が難しくない(実装が簡単)ので、可能な限りデータパイプラインに使用すべきです。
また、多くの企業がAirflowの使用経験を求めているため、データエンジニアを目指すのであれば習得しておいた方がよいでしょう
また、自分でAirflowを動かして管理するよりも、マネージドAirflow(私は今のところGCPのComposerしか使ったことがありません)の方が便利で、Airflowを管理する
webserver
と
scheduler
のプロセスです。
関連
-
[解決済み] Jupyter notebookは2つのpandasテーブルを並べて表示する
-
[解決済み] Apache BeamがSpark/Flinkよりもバッチ処理に優れている点は何ですか?
-
[解決済み] IPython Notebookのセル複数出力
-
[解決済み] Pandas: 複数インデックスを持つカラムのデータフレームにカラムを追加する
-
[解決済み] pandas to_excelから行名(インデックス)なしでエクスポートしますか?
-
[解決済み] Pandasで共通の列の値に基づいて2つのデータフレームをマージする
-
pandasで連続した行の差の結果をカラムに追加する
-
Pandas棒グラフが日付の書式を変更する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン