Apache AirFlow - インポート
ブリッジの要件
このブリッジ:ドライバーを<TDC_HOME>/data/download/MIMB/にダウンロードするためには、https://repo.maven.apache.org/maven2/ やその他のツールサイトへのインターネットアクセスが必要です。
ブリッジの仕様
ベンダー | Apache |
ツール名 | AirFlow |
ツールバージョン | 現行 |
ツールの Web サイト | http://airflow.apache.org/ (英語のみ) |
サポートされている方法論 | [データ統合] JSONファイルでのREST API経由のマルチモデル、メタデータリポジトリー、 ETL (ソースとターゲットのデータストア) |
データプロファイリング | ![]() |
増分収集 | ![]() |
マルチモデル収集 | ![]() |
モデル選択のためのリモート リポジトリーの参照 | ![]() |
仕様
ツール: JSONファイルでのREST API経由のApache / AirFlowの現行バージョン
http://airflow.apache.org/をご覧ください。
メタデータ: [データ統合] マルチモデル、メタデータリポジトリー、ETL (ソースとターゲットのデータストア)
コンポーネント: OpenLineageImport.ApacheAirFlowバージョン11.2.0
免責事項
このインポートブリッジでは、インターネットに接続して次のサードパーティライブラリーをダウンロードする必要があります。
- オープンソースのサードパーティライブラリーのダウンロードはhttps://repo.maven.apache.org/maven2/などへ
- その他のサードパーティソフトウェア(データベース特定のJDBCドライバーなど)は該当するサイトへ
ダウンロードされたサードパーティライブラリーは、$HOME/data/download/MIMB/ に格納されています。
HTTPS が失敗した場合、インポートブリッジは HTTP を試します。
- インターネットへのアクセスにプロキシを使用している場合は、JREでそのプロキシを設定する必要があります(Miscellaneousパラメーターで -java.parametersオプションをご覧ください)。
- インポートブリッジではインターネットにフルにアクセスできない場合は、インターネットアクセスがある別のサーバーから$HOME/data/download/MIMB/ディレクトリーをコピーします。$HOME/bin/MIMB.sh (または.bat) -dというコマンドを使えば、すべてのブリッジで使用される全サードパーティライブラリーを一度にダウンロードできます。
このインポートブリッジを実行すると、ライセンス規約の責任、およびダウンロードしたサードパーティソフトウェアライブラリーによって生じる潜在的なセキュリティの脆弱性を受け入れることになります。
概要
OpenLineage (https://openlineage.io/)は、データ来歴の収集と分析のためのオープンなプラットフォームです。データセット、ジョブ、実行のメタデータを追跡し、データパイプラインのさまざまな段階におけるデータフローを捕捉し共有できるよう、統一的な方法を提供します。ドキュメンテーションはhttps://openlineage.io/docs/でご確認いただけます。
OpenLineageエコシステムは、人気が高いツール(Apache Airflow、Spark、Dbt など)との統合をサポートしています。サポートされている統合のリストは、https://openlineage.io/docs/integrations/aboutでご確認いただけます。
そのうち、このOpenLineageブリッジはApache AirFlowとDbtのみをサポートしています。
- APACHE AIRFLOW:
Apache Airflow (https://airflow.apache.org/)は、ワークフローのプログラムによる作成、スケジュール設定、監視に使用されるオープンソースプラットフォームです。Airflowはワークフローを有向非循環グラフ(DAG)として表現し、ここでタスクは依存項目とデータフローで接続されています。タスクと依存項目はPythonで定義され、その後、Airflowがスケジュール設定と実行を管理します。DAGは、定義されたスケジュール(毎時または毎日など)に基づいて実行されるか、外部イベントトリガー(Hiveにファイルが作成された場合など)に基づいて実行されます。
Apache AirFlowはOpenLineageを活用し、AirFlowでオーケストレーションされるデータパイプラインの包括的なデータ来歴を提供します。OpenLineageは、AirFlowとの統合プロセスを簡素化する専用のApache AirFlowプロバイダー(apache-airflow-providers-openlineage)を備えています。このプロバイダーにより、DAGとタスクが実行される際に、AirFlowが自動的にOpenLineageイベントを発行できるようになります。
OpenLineage for AirFlowのドキュメンテーションは、以下でご覧いただけます:
https://openlineage.io/docs/integrations/airflow/
https://airflow.apache.org/docs/apache-airflow-providers-openlineage/stable/index.html
このインポートブリッジは、OpenLineageメタデータファイルからAirflow DAGとタスクをインポートします。したがって、OpenLineageでのAirFlowデータ入力に関する制限事項と、OpenLineage標準における制限事項による影響は、ブリッジがキャプチャーできる内容にも現れます。
- DBT:
Dbt (data build tool) https://www.getdbt.com/ はデータ変換エンジンです。データウェアハウス内に既に存在するデータに対して動作し、データエンジニアが複雑なパイプラインをビルドできるようになっています。データ抽出やロードは行わないものの、データ変換においては極めて強力な機能を備えています。
OpenLineage for dbtのドキュメンテーションは、以下でご覧いただけます:
https://openlineage.io/docs/integrations/dbt
制限事項
現在判明している一般的な制限事項は、https://metaintegration.com/Products/MIMB/Help/#!Documents/mimbknownlimitations.htmlをご覧ください。
- OpenLineage of Airflowは、特定のオペレーター(SQLExecuteQueryOperator、GCSToBigQueryOperator、BigQueryToGCSOperator、PythonOperator、BashOperatorなど)を使用する場合のみ、カラムレベルの来歴を提供します。データベース間のデータ転送(例: SQL ServerからSnowflakeへ)にGenericOperatorや他のオペレーターを使用した場合、来歴は生成されません。
- AirFlowのOpenLineageは、データ対制御フローの詳細を提供しません。
- AirflowのOpenLineageは、WHERE、FILTER、HAVINGのようなSQL演算子に関する来歴詳細を提供しません。
- AirflowのOpenLineageは、使用されているデータベース、スキーマ、テーブル、カラムの名前で大文字と小文字を区別されるかどうかを明示しません。
- AirflowのOpenLineageは、カラムに関する式を提供しません。
ブリッジ パラメーター
パラメーター名 | 説明 | タイプ | 値 | デフォルト | スコープ |
HTTPネームスペース | ここには、OpenLineage HTTP転送を使ってMIMBWebServices OpenLineageリスナーにイベントを送信するクライアント(Airflow、dbt)の OpenLineageネームスペースを指定します。[ファイルディレクトリー]オプションは無視され、効果を持ちません。 | REPOSITORY_MODEL | |||
ファイルディレクトリー | ここには、OpenLineageファイル転送によって作成されたOpenLineageイベントファイルが含まれているディレクトリーを入力します。メタデータを別ファイルに保存している場合は、この[ファイルディレクトリー]オプションを使用してください。 | DIRECTORY | |||
Miscellaneous | はじめに ダッシュで始まるMiscellaneousオプションを指定し、必要であればその後にパラメーターを追加できます。例: - connection.cast MyDatabase1="MICROSOFT SQL SERVER" 該当する場合は複数回使用できるオプションもあります。例: - connection.rename NewConnection1=OldConnection1 -connection.rename NewConnection2=OldConnection2; オプションのリストは長い文字列になるため、${MODEL_BRIDGE_HOME}\data\MIMB\parametersにあり拡張子が.txtであるファイルからロードすることもできます。その場合、オプションはすべて、このパラメーターの唯一の値としてそのファイル内で定義されることが必要です。例: ETL/Miscellaneous.txt JAVA環境のオプション -java.memory <Javaメモリの最大サイズ> (以前の-m) 64ビットJREではデフォルトで1G、またはconf/conf.properties内の設定に従います。例: -java.memory 8G -java.memory 8000M -java.parameters <Javaランタイム環境コマンドラインオプション> (以前の-j) -java.parameters -Dname=value -Xms1G のように、-java.parametersの後ろのテキストはすべてそのままJREに渡されるため、このオプションはMiscellaneousパラメーター内の最後に来る必要があります。インターネットへのアクセスにプロキシを使用している場合は、必要なサードパーティのソフトウェアライブラリーをダウンロードできるよう、次のオプションを設定する必要があります(このオプションはhttps://repo.maven.apache.org/maven2/にアクセスするため、そして例外的にいくつかの他のツールサイトにアクセスするために不可欠です)。 注: プロキシは、(会社の)外部トラフィックをHTTPSで暗号化しながら、HTTPでプロキシにアクセスできる内部トラフィックを信頼しているものがほとんどです。この場合、HTTPSリクエストはHTTPでプロキシに到達し、プロキシはそれをHTTPSで暗号化します。 -java.parameters -java.parameters -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=3128 -Dhttp.proxyUser=user -Dhttp.proxyPassword=pass モデルインポートのオプション -model.name <モデル名> モデル名をオーバーライドをオーバーライドします。例: -model.name "My Model Name" -prescript <スクリプト名> このオプションによって、ブリッジの実行前にスクリプトを実行できるようになります。 スクリプトはbinディレクトリー(またはconf/conf.propertiesのM_SCRIPT_PATHで指定)にあり、拡張子が.batか.shであることが必要です。 スクリプトのパスに親ディレクトリーの記号( .. )を含めることはできません。 スクリプトは、成功した場合は終了コードである0を、失敗した場合は別の値を返します。 例: -prescript "script.bat arg1 arg2" -postscript <スクリプト名> このオプションによって、ブリッジが正しく実行された後にスクリプトを実行できるようになります。 スクリプトはbinディレクトリー(またはconf/conf.propertiesのM_SCRIPT_PATHで指定)にあり、拡張子が.batか.shであることが必要です。 スクリプトのパスに親ディレクトリーの記号( .. )を含めることはできません。 スクリプトは、成功した場合は終了コードである0を、失敗した場合は別の値を返します。 例: -postscript "script.bat arg1 arg2" -cache.clear インポート前にキャッシュをクリアするため、増分収集せずにフルインポートを実行します。 モデルが変更されず、-cache.clearパラメーターが使われていない場合(増分収集)、新しいバージョンは作成されません。 モデルが変更されず、-cache.clearパラメーターが設定されている場合(増分ではなくフルソースインポート)、新しいバージョンが作成されます。 -backup <directory> さらなるトラブルシューティングのため、入力メタデータを保存できるようにします。指定された<directory>は空であることが必要です。 -restore <ディレクトリー> 復元するバックアップ<ディレクトリー>を指定します。 データ接続オプション 使用するソースとターゲットのデータストアを参照するよう、通常はETL/DIツールとBIツールのインポートブリッジによってデータ接続が生成されます。これらのデータ接続はメタデータ管理ツールによって実際のデータストア(データベースやファイルシステムなど)への接続(メタデータスティッチング)に使われ、完全なエンドツーエンドのデータフローの来歴とインパクト分析が行われます。各データ接続の名前はインポートモデルごとに一意です。DI/BIデザインツールで使われているデータ接続名を可能な限り使用します。そうでない場合は、データベース/スキーマ名、ファイルシステムのパス、Uniform Resource Identifier (URI)など、短くても意味のある接続名が生成されます。次のオプションを使えば、接続を操作できます。これらのオプションによって、レガシーオプションである-c、-cd、-csが置き換えられます。 -connection.cast ConnectionName=ConnectionType SQL解析のためにジェネリックデータベース接続(ODBCやJDBCなど)を正確なデータベースタイプ(ORACLEなど)にキャストします。例: -connection.cast "My Database"="MICROSOFT SQL SERVER" サポートされているデータストア接続タイプのリストは次のとおりです。 ACCESS APACHE CASSANDRA DB2/UDB DENODO GOOGLE BIGQUERY HIVE MYSQL NETEZZA ORACLE POSTGRESQL PRESTO REDSHIFT SALESFORCE SAP HANA SNOWFLAKE MICROSOFT SQL AZURE MICROSOFT SQL SERVER SYBASE SQL SERVER SYBASE AS ENTERPRISE TERADATA VECTORWISE HP VERTICA -connection.rename OldConnection=NewConnection 既存の接続を新しい名前に変更します。例: -connection.rename OldConnectionName=NewConnectionName 既存の複数のデータベース接続の名前を変更し、新しい1つのデータベース接続に統合できます。例: -connection.rename MySchema1=MyDatabase -connection.rename MySchema2=MyDatabase -connection.split oldConnection.Schema1=newConnection データベース接続を1つまたは複数のデータベース接続に分割します。 1つのデータベース接続をスキーマごとの1つの接続に分割できます。例: -connection.split MyDatabase すべてのデータベース接続をスキーマごとの1つの接続に分割できます。例: -connection.split * データベースにスキーマ名を追加することで、データベース接続を明示的に分割し、新しいデータベース接続を作成できます。例: -connection.split MyDatabase.schema1=MySchema1 -connection.map SourcePath=DestinationPath ソースパスをデスティネーションパスにマッピングします。これは、異なるパスが同じオブジェクト(ディレクトリーまたはファイル)をポイントしている場合にファイルシステム接続にとって便利です。 Hadoopでは、あるプロセスがHDFSの完全パスで指定されたCSVファイルに書き込む一方、別のプロセスが、デフォルトのファイル名と拡張子を持つ相対パスで指定されている同じファイルによって実装されたHiveテーブル(外部)から読み取ります。例: -connection.map /user1/folder=hdfs://host:8020/users/user1/folder/file.csv Linuxでは、/users/johnや/users/paulといった複数のシンボリックリンクによって、/dataのような特定のディレクトリー(またはファイル)が参照されます。例: -connection.map /data=/users/John -connection.map /data=/users/paul Windowsでは、M:やN:といった複数のネットワークドライブによって、C:\dataのような特定のディレクトリーが参照されます。例: -connection.map C:\data=M:\ -connection.map C:\data=N:\ -connection.casesensitive ConnectionName... 検出されたデータストアのタイプがこの設定(Microsoft SQL ServerやMySqlなど)をサポートしている場合は、指定された接続内のオブジェクト識別子に対し、大文字と小文字を区別しないデフォルトのマッチングルールがオーバーライドされます。例: -connection.casesensitive "My Database" -connection.caseinsensitive ConnectionName... 検出されたデータストアのタイプがこの設定(Microsoft SQL ServerやMySqlなど)をサポートしている場合は、指定された接続内のオブジェクト識別子に対し、大文字と小文字を区別するデフォルトのマッチングルールがオーバーライドされます。例: -connection.caseinsensitive "My Database" -connection.level AggregationLevel 外部接続の集計レベルを指定します。例: -connection.level catalog サポートされている値のリスト: server catalog schema (デフォルト) ETLのオプション これらのオプションは、以下の目的ですべてのETL/DIツールとスクリプティングインポートブリッジで利用できます: - SQL解析をすべて処理する - デザインモデルとランタイム変数からランタイムモデルをビルドする - ランタイムサマリー来歴を計算する -etl.summary.add.ultimate (以前の-ppus) 最終的なランタイム来歴サマリーを追加します(非常に大きなモデルが生成される可能性があります)。 -etl.summary.only.ultimate (以前の-ppsp) 最終的なランタイム来歴サマリーのみ生成します(非常に大きなモデルが生成される可能性があります)。 -etl.connections.add.internal.design (以前の-pppd) 内部ETLデザインデータコネクター(ETL変換に必要)を追加します。 -etl.connections.remove.input (以前の-ri) 生成されるモデルのサイズ縮小のため、入力(ソース)データ接続をすべて削除します。 -etl.transformations.enable.xml このオプションによって、DI/ETLインポートブリッジ(Informatica PowerCenter、Informatica Developer、Microsoft SSIS、IBM DataStage、Talend Data Integration など)でのXML変換の解析とサポートが有効になります。 Informatica の場合、そのような XML 変換は次の PowerCenter の機能に相当します。 https://docs.informatica.com/data-integration/powercenter/10-5/xml-guide/midstream-xml-transformations.html https://docs.informatica.com/data-integration/powercenter/10-5/xml-guide/xml-source-qualifier-transformation.html ただし、このオプションはインポートの速度を著しく低下させる可能性がありますのでご注意ください。 -model.merge すべてのタスクステータスを、結果の来歴と共に単一のモデルに統合させます。 |
STRING |
ブリッジのマッピング
マッピング情報は利用できません