データ品質監視ツール-ApacheGriffin
Data Quality Monitoring Tool Apache Griffin
I.概要
ビジネスの発展とデータ量の増加に伴い、ビッグデータアプリケーション開発は部門別アプリケーション開発の一般的な開発方法になりました。部門のビジネス特性間の関係により、SparkとHiveアプリケーションの開発は部門内でより一般的です。処理されるデータの量が特定のレベルに達し、システムの複雑さが増すと、データの一意性、整合性、一貫性などが注目され始めます。通常は、レポートなどの仕事をさらに開発したり、ビジネスの特性に応じて開発したりします。タスクのチェックは時間と労力を要します。
現在遭遇しているテーブルのほとんどは、数億から数十億のデータであり、レポートの数は増加しています。この場合、構成可能で視覚的で監視可能なデータ品質ツールが特に重要です。 。 Griffin Data Quality Monitoring Toolは、前述のデータ品質の問題に対処するオープンソースソリューションです。
第二に、Apache Griffin
GriffinはeBayChinaで始まり、2016年12月にApacheインキュベーターに入りました。ApacheSoftwareFoundationは、2018年12月12日に、ApacheGriffinがApacheトップレベルプロジェクトとして卒業したことを正式に発表しました。
グリフィンはモデル駆動型ソリューションです。ターゲットデータセットまたはソースデータセット(参照データ)に基づいて、ユーザーはさまざまなデータ品質ディメンションを選択して、ターゲットデータ品質の検証を実行できます。バッチデータとストリーミングデータの2種類のデータソースがサポートされています。バッチデータの場合、データコネクタを介してHadoopプラットフォームからデータを収集できます。ストリーミングデータの場合、Kafkaなどのメッセージングシステムに接続して、ほぼリアルタイムのデータ分析を行うことができます。データを取得した後、モデルエンジンはスパーククラスターのデータ品質を計算します。
2.1機能
- 測定: 正確性、完全性、適時性、独自性、有効性、一貫性。
- 異常な監視: 事前定義されたルールを使用して、期待を満たさないデータを検出し、ルールデータと一致しないダウンロードを提供します。
- 異常アラーム: 電子メールまたはポータルを介してデータ品質の問題を報告します。
- 視覚的モニタリング: コントロールパネルを使用して、データ品質のステータスを表示します。
- リアルタイム: データ品質の検出はリアルタイムで実行でき、問題は時間内に発見できます。
- スケーラビリティ: 複数のデータシステムウェアハウスのデータ検証に使用できます。
- スケーラビリティ: 大規模なデータ環境で作業している場合、現在実行されているデータ量は約1.2PB(eBay環境)です。
- セルフサービス: Griffinは、データ資産とデータ品質ルールを管理するためのシンプルで使いやすいユーザーインターフェイスを提供し、ユーザーはコントロールパネルからデータ品質の結果とカスタム表示コンテンツを表示できます。
2.1.1データ品質指標の説明
- 正確さ: メトリックデータが、金額の検証、検証に成功したレコードのレコードの総数に対する比率など、指定された目標値と一致するかどうか。
- 整合性: 欠落しているレコード、欠落しているフィールド、欠落している属性など、メトリックデータが欠落しているかどうか。
- 適時性: 指定された目標に対するデータの測定の適時性。
- 独自性: メトリックデータレコードが複製されているかどうか、および属性が複製されているかどうかは、ハイブテーブルの主キー値が複製されているかどうかを測定するのが一般的です。
- 有効: データが契約のタイプ、形式、データ範囲などのルールに準拠しているかどうかを測定します。
- 一貫性: メトリックデータがビジネスロジックに準拠しているかどうか、およびレコード間のロジックの検証、たとえば、pvはuvより大きくなければならず、注文金額とさまざまなオファーの後の価格はゼロ以上でなければなりません。
2.2利点
- 構成可能でカスタマイズ可能なデータ品質検証。
- スパークデータ分析に基づいて、データ検証結果をすばやく計算できます。
- 履歴データの品質傾向が視覚化されます。
2.3ワークフロー
- データを登録し、データ品質を検出したいデータソースをグリフィンに登録します。
- 測定モデルを構成して、精度、完全性、適時性、一意性などのデータ品質ディメンションからモデルを定義します。
- Sparkクラスターを送信し、データを定期的に確認するようにスケジュールされたタスクを構成します。
- ポータルインターフェイスのインジケータを表示し、データ品質チェックの結果を分析します。
2.4システムアーキテクチャ
グリフィンシステムは、図に示すように、主にデータ収集および処理レイヤー、バックエンドサービスレイヤー、およびユーザーインターフェイスに分けられます。
システムデータ処理階層図:
システム処理フローチャート:
2.5データ検証ロジック
2.5.1精度、ハイブメタデータからのデータソースの読み込み、精度の検証
- ソーステーブルと列を選択します
- ターゲットテーブルと列を選択します
- フィールド比較ルールを選択します(より大きい、より小さい、または等しい)
- 次の式で結果を計算します。
- 最後に、コントロールパネルで精度の傾向を確認します。
2.5.2データの統計分析(プロファイリング)
- 分析するデータソースの選択、フィールドの構成など。
- 簡単な統計: テーブルのカウントに使用される特定の列の値が空、一意、または重複しています。たとえば、統計フィールド値のnullレコードの数-指定されたしきい値を超えると、データが失われる可能性があります。
- 要約統計量: 最大、最小、平均、中央値などをカウントするために使用されます。たとえば、統計年齢列の最大値は、データの異常があるかどうかを判断するための最小値です。
- 高度な統計: 正規表現を使用して、データの頻度とパターンを分析します。たとえば、メールボックスフィールドのフォーマット検証、ルールのデータ検証を指定します。
- データ分析メカニズムは、主に、SparkのMLlibによって提供される列要約統計関数に基づいています。この関数は、すべての列の型統計を1回だけ計算します。
- コントロールパネルの分析データ
2.5.3異常検出
-
異常検出の目的は、一見正常に見えるデータから異常を見つけることであり、データ品質の問題を検出するための重要なツールです。ボリンジャーバンドとMADアルゴリズムを使用して異常検出を実装することにより、データセット内で予想とはかけ離れたデータを見つけることができます。
-
MADを例にとると、データセットのMAD値は、各データポイントと平均の間の距離を反映します。次の手順に従って、MAD値を取得できます。
- 平均を計算する
- 各データポイントと平均値の差を計算します
- 差の絶対値を取る
- 絶対値を取った後、これらの差の平均を計算します
式は次のとおりです。
異常検出により、データ値の変動が予想通りであることがわかります。データの期待値は、過去の傾向の分析から得られます。ユーザーは、検出された異常に応じてアルゴリズムの必要なパラメーターを調整して、異常検出をより需要に近づけることができます。
2.6デモ
たとえば、サプライヤの請求スケジュールの同期精度を検出するには、次の図に示すようにデータ検出を構成します。
- データソースを選択
- 請求の詳細を選択します ソーステーブル フィールド
- 請求の詳細を選択します 目的 テーブルフィールド
- ソーステーブルとターゲットテーブル間のチェックフィールドマッピング関係を設定します
- データパーティション、条件、および結果ファイルを出力するかどうかを選択します。 (パーティションテーブルはスキップできません)
- 検証プロジェクトの名前と説明を設定します。送信するとリストに表示されます。 測定する 情報
データモデルメトリックが作成された後、分析を実行するには、対応するスパークタイマータスクが必要です。次のステップは、スパークジョブとスケジューリング情報を作成することです。
- ジョブメニューで、[ジョブの作成]を選択します。
ジョブインターフェイスを作成するには、ソーステーブルとターゲットテーブルのデータ範囲を選択する必要があります。上の図に示すように、現在のデータパーティション、つまり昨日のデータパーティションに対してt-1を選択します。タイミング式を設定します。タスクを送信した後、ジョブリストで表示できます。
- この時点で、データ検証メトリックと分析タスクが構成されており、メトリックに基づいて電子メールアラートなどの監視情報を設定することもできます。次に、図に示すように、コントロールパネルでデータ品質を監視できます。
2.7バックグラウンド提出監視タスク
ユーザーがコントロールパネルでデータ検証タスクを作成することに加えて、メトリック情報をバックグラウンドで生成し、データ検出のためにスパークタスクを送信して、優れたデータアクセスと構成のスケーラビリティを提供できます。 API構成データの検出は、公式Webサイトで確認できます。 クイックガイド 。
現在、リアルタイムデータ検出にはインターフェース構成がなく、リアルタイムデータモニタリングはAPIを介して送信できます。詳細については、以下を参照してください。 ストリーミングのユースケース 。