Apache SparkとTalendを使用してHadoopにOracle及びMySQLデータベースをオフロードする方法

article in English

 

ビッグデータの分野では、従来のデータウェアハウスをHadoop環境にオフロードすることが一般的です。一次使用向けの場合も、「コールドデータ」を保存するためだけの場合も、Talendは負担のないオフロードを実現します。

データアーキテクチャーを最適化しようとする多くの組織は、Hadoopをコールドデータに利用したり、アーカイブの維持のために使用したりしています。 Talendは、Hadoopのネイティブコード生成によってこのプロセスを容易にすることができます。

Talendはすでに、Sqoopを使用してこの手法をサポートするためのコネクターを事前に組み込んでいます。ここでは、Apache Sparkを使って同じ目的を達成する方法について説明します。

Download >> Talend Open Studio for Data Integration

Apache Sparkは、大規模データ処理のための高速の汎用エンジンです。 このエンジンは、Hadoopディストリビューションのほとんどの最新バージョン(Cloudera、Hortonworks、MapR、AWS EMR等)で利用できます。Massively Parallel Processing(MPP)アーキテクチャー上に構築されているため、データフローを大規模に並列化してあらゆるエンタープライズワークロードを処理できます。

現在、データベースからHadoopにデータをオフロードする手段として最も高速で最も広く知られているのは、Sqoopを活用する方法です(SqoopはMapReduceプロセスの下でRDBMSからHadoopへのオフロードを実行します)。 ここでは、Sqoopを使用する場合と同じ目的を達成するために、SPARKをフレームワーク/エンディングとして使用する方法をご紹介します

最初に、Sparkを使用して1つのテーブルをOracleまたはMySQLからHadoopに移動する方法について解説します。ジョブが準備できたら、データベースサーバーからHadoopに移動するためにテーブルリストによって制御される汎用ジョブを作成するタスクを実行します。

わかりやすくするために、次の2つのシナリオで検討します。

  • SparkジョブからHDFSへテーブルをオフロードする
  • 上記のジョブを自動化し、メタデータ駆動型の取り込みフレームワークに変換してテーブルリストを操作する

SparkジョブからHDFSへテーブルをオフロードする

Leveragingtalendtooffloaddatabases1

このシナリオでは、Apache Sparkと次のような一般的なQueryステートメントを使用して、データベーステーブルから抽出したデータをHDFSに移動する非常に一般的なジョブを作成しています。

"SELECT concat_ws ('" + context.FIELD_SEPARATOR + "'," + context.column_list + ") as my_data FROM my_table".
) As my_data FROM my_table ".

Context.FIELD_SEPARATOR  は、ジョブレベルが‘,’、‘;’等に設定されたコンテキスト変数です。context.column_listは、抽出する必要のあるFIELD(例:field1、field2、field3…)の連結であるコンテキスト変数です。

このオフロードジョブは、Sparkを使用してHadoop上でネイティブにクエリステートメントを実行します。 生成されたコードは、YARNを介して直接展開されます。

上記のジョブを自動化し、メタデータ駆動型の取り込みフレームワークに変換してテーブルリストを操作する

Leveragingtalendtooffloaddatabases2

オフロード準備プロセスは、データベースから開始します。次に、テーブルリストとテーブル内の列リストの抽出とコンテキスト化が行われます(オフロードジョブに送信される変数の準備)。 これが完了すると、テーブルの反復処理によりオフロードジョブへの単純な呼び出しが行われ、Hadoopへのオフロードが実行されます。 オフロードプロセスは、前述の「SparkジョブからHDFSへテーブルをオフロードする」セクションで説明したジョブです。

Download >> Talend Open Studio for Data Integration

Share

Leave a comment

コメントを追加

More information?