Hive表の処理

Hive表には、データ処理ワークフローのデータが含まれます。

処理が行われると、Hive表ごとにBDDデータ・セットが作成され、このデータ・セットにはHive表のレコードが含まれます。Hive表を処理するには、Hive表に少なくとも1つのレコードが含まれる必要があります。つまり、空のHive表が見つかるとエラーが生成され、この空の表に対してはデータ・セットが作成されません。

ワークフローの起動

データ処理ワークフローは、次の2つの方法のいずれかで起動できます。
  • Studioのユーザーが、新しいHive表を作成するための操作を起動します。Hive表が作成された後、この表に対してデータ処理プロセスが開始されます。
  • DP CLI (コマンド行インタフェース)ユーティリティを実行します。

DP CLIを手動で実行するか、cronジョブから実行すると、BDD Hive表ディテクタが起動し、DataSetインベントリ内にまだ存在しないHive表を検索できます。この後、この表に対してデータ処理ワークフローが実行されます。DP CLIの実行の詳細は、「DPコマンド行インタフェース・ユーティリティ」を参照してください。

新しいHive表ワークフロー

StudioとDP CLIは両方とも、データ・エンリッチメント・モジュールを使用しないデータ処理ワークフローを起動するよう構成できます。次の高度な図は、データ・エンリッチメント・モジュールを実行するワークフローを示しています。

ワークフローの手順は、次のとおりです。
  1. StudioまたはDP CLIによって単一のHive表に対してワークフローが起動されます。
  2. Oozieジョブが起動され、これにより、Sparkワーカーにワークフローが割り当てられます。Hive表のデータ・ファイルからデータがロードされます。表内の行の合計数が計算され、データがサンプリングされ、主キーが追加されます。処理(サンプリング)されるレコードの数は、StudioまたはDP CLI構成に指定されています。
  3. 手順2のデータがHDFS内のAvroファイルに書き込まれます。このファイルは、関連するデータ・セットが存在するかぎり、HDFS内に残ります。
  4. データ・セットのスキーマおよびメタデータが検出されます。これには、longやgeocodeなど、各列のデータ型の検出も含まれます。検出されたメタデータにより、DataSetインベントリも更新されます。DataSetインベントリ存在しない場合は、この時点で作成されます。
  5. データ・エンリッチメント・モジュールが実行されます。検出プロセスの結果に基づいて推奨されるエンリッチメントのリストが生成されます。データは、推奨されるエンリッチメントを使用してエンリッチされます。エンリッチメントの実行が構成で無効である場合、この手順はスキップされます。
  6. 手順4および5の設定を使用してDgraphでデータ・セットが作成されます。新しいデータ・セットのメタデータを含めるために、DataSetインベントリも更新されます。
  7. データ・セットがプロビジョニングされ(つまり、収集用のHDFSファイルが書き込まれ)、HDFSファイルを取得するようDgraph HDFSエージェントに通知されます。これらのHDFSファイルはDgraphに収集するためにDgraphの一括ロード・インタフェースに送信されます。
  8. プロビジョニングが終了した後、Dgraph HDFSエージェントにより、プロビジョニング(収集)操作の最終ステータスを使用してDataSetインベントリのingestStatus属性が更新されます。

更新したHive表の処理

既存のデータ・セットは、ソースHive表が更新された場合は更新されません。たとえば、データ・セットが特定のHive表から作成されているとします。このHive表が新しいデータを使用して更新された場合、関連するデータ・セットは変更されません。これは、この時点で、BDDデータ・セットはソースHive表と同期していないことを意味します。

更新されたHive表を処理(新しいデータ・セットを作成)するには、次を実行します。
  1. Studioから、データ・セットを削除します。削除操作の一環として、このデータ・セットのソースであるHive表にskipAutoProvisioningプロパティが追加されます。このプロパティにより、データ処理で表が処理されないようにします。
  2. Hive環境で、Hive表からskipAutoProvisioningプロパティを削除します。
  3. CLIを実行します。これにより、表に対してデータ処理ワークフローが起動されます。

データ処理により、Hive表の新しいバージョンを表す新しいデータ・セットが作成されます。

削除したHive表の処理

BDDでは、関連するBDDデータ・セットがStudioから削除されている場合でも、Hive表は削除されません。ただし、Hive管理者であれば、Hive表からデータ・セットが作成されている場合でも、このHive表を削除できます。この場合、BDDデータ・セットは自動的に削除されず、Studioでそのまま表示できます。(ソースHive表が削除されたデータ・セットは、孤立したデータ・セットと呼ばれます。)

DP CLIの次回の実行時に、孤立したデータ・セットが検出され、このデータ・セットを削除するデータ処理ジョブが実行されます。

空のHive表の処理

データ処理では、空のHive表は処理されません。かわりに、空のHive表に対してデータ処理が実行された場合は、EmptyHiveTableExceptionがスローされます。これにより、DP Oozieジョブは失敗します。

Studioプロジェクトの削除

Studioユーザーがプロジェクトを削除すると、データ処理が呼び出され、プロジェクト内で変換されたデータ・セットが削除されます。ただし、変換されていないデータ・セットは削除されません。