HDFSでのデータの読み書き

このチュートリアルでは、ランダムデータを生成してHDFSに書き込みます。次に、HDFSからデータを読み取り、ソートして結果をコンソールに表示します。

このチュートリアルでは、Talend Data Fabric Studioバージョン6とHadoopクラスター(Cloudera CDHバージョン5.4)を使用します。

1. 新しい標準ジョブを作成する

  1. [Integration]パースペクティブが選択されていることを確認します。
  2. Hadoopクラスター接続とHDFS接続メタデータがプロジェクトリポジトリに作成されていることを確認するには、[Hadoop Cluster]を展開します。
  3. リポジトリで、[Job Designs]を展開し、[Standard]を右クリックして[Create Standard Job]をクリックします。[New Job]ウィザードの[Name]フィールドに、ReadWriteHDFSと入力します。[Purpose]フィールドにRead/Write data in HDFSと入力し、[Description]フィールドにStandard job to write and read customers data to and from HDFSと入力して、[Finish]をクリックします。ジョブデザイナーでジョブが開きます。
  4. ランダムな顧客データを生成するために、tRowGeneratorコンポーネントを追加して構成します。
  5. ランダムな顧客データを生成するには、ジョブデザイナーでtRowGeneratorを追加します。
  6. tRowGeneratorコンポーネントのスキーマと関数のパラメーターを設定するには、[tRowGenerator_1]をダブルクリックします。
  7. スキーマに列を追加するには、[+]アイコンを3回クリックして、列名をCustomerIDFirstNameLastNameとして入力します。次に、これらのフィールドの属性を構成します。
  8. [CustomerID]列のタイプを変更するには、[Type]フィールドをクリックし、[Integer]をクリックして、3つの列の[Functions]フィールドをそれぞれrandom(int,int)TalendDataGenerator.getFirstName()TalendDataGenerator.getLastName()に設定します。
  9. テーブルで[CustomerID]列を選択し、[Function parameters]タブで最大値を1000に設定します。
  10. [Number of Rows for RowGenerator]フィールドに1000と入力し、[OK]をクリックして構成を保存します。

2. HDFSにデータを書き込む

ここでは、プロジェクトリポジトリで利用可能な既存のHDFSメタデータを再利用する新しいtHDFSOutputコンポーネントを作成します。

  1. リポジトリの[Metadata] > [HadoopCluster] > [MyHadoopCluster] > [HDFS]をクリックし、[MyHadoopCluster_HDFS]をクリックしてジョブデザイナーにドラッグします。
  2. [Components]リストで、[tHDFSOutput]を選択して[OK]をクリックします。
  3. tRowGenerator_1コンポーネントからMyHadoopCluster_HDFSコンポーネントへのデータフローを作成するため、2つのコンポーネントを[Main]行にリンクします。次に、[MyHadoopCluster_HDFS]コンポーネントをダブルクリックして[Component]ビューを開きます。

    注:コンポーネントは定義済みのHDFSメタデータ接続情報ですでに構成されています。
  4. [File Name]ボックスに「/user/student/CustomersData」と入力し、[Action]リストの[Overwrite]を選択します。

HDFSにデータを書き込む最初のサブジョブはこれで完了です。先に作成したtRowGeneratorで生成されたデータを使用し、メタデータを使用して定義された接続を使用してHDFSに書き込みます。

3. HDFSからデータを読み取る

次に、HDFS上の顧客データを読み取り、ソートしてコンソールに表示するためのサブジョブを作成します。HDFSから顧客データを読み取るには、プロジェクトリポジトリで利用可能な既存のHDFSメタデータを再利用する新しいtHDFSInputコンポーネントを作成します。

  1. リポジトリの[Metadata] > [HadoopCluster] > [MyHadoopCluster] > [HDFS]をクリックし、[MyHadoopCluster_HDFS]をクリックしてジョブデザイナーにドラッグします。
  2. [Components]リストで、[tHDFSInput]を選択して[OK]をクリックします。
  3. MyHadoopCluster_HDFS入力コンポーネントの[Component]ビューを開くには、[MyHadoopCluster_HDFS]入力コンポーネントをダブルクリックします。

    注:コンポーネントは定義済みのHDFSメタデータ接続情報ですでに構成されています。
    .
  4. [File Name]ボックスに/user/student/CustomersDataと入力します。

4. MyHadoopCluster_HDFS入力コンポーネントでスキーマを指定し、HDFSからデータを読み取る

  1. スキーマエディターを開くには、MyHadoopCluster_HDFS入力コンポーネントの[Component]ビューで[Edit schema]をクリックします。
  2. スキーマに列を追加するには、[+]アイコンを3回クリックして、列名をCustomerIDFirstNameLastNameとして入力します。
  3. CustomerID列の種類を変更するには、[Type]フィールドをクリックし、[Integer]をクリックします。

    注:このスキーマは、tRowGeneratorおよびtHDFSOutputと同じです。これらのコンポーネントのいずれかからコピーして、このスキーマに貼り付けることができます。
  4. OnSubjobOkトリガーを使用して、tRowGeneratorコンポーネントをMyHadoopCluster_HDFS入力コンポーネントに接続します。

5. tSortRowコンポーネントを使用し、顧客IDのデータを昇順でソートする

  1. tSortRowコンポーネントを追加し、[Main]を使用してMyHadoopCluster_HDFS入力コンポーネントに接続します。
  2. tSortRowコンポーネントの[Component]ビューを開くには、コンポーネントをダブルクリックします。
  3. スキーマを構成するには、[Sync columns]をクリックします。
  4. [Criteria]テーブルに新しい条件を追加するには、[+]アイコンをクリックして[Schema]列にCustomerIDと入力します。[sort num or alpha?]列で[num]を選択し、[Order asc or desc?]列で[asc]を選択します。

6. tLogRowコンポーネントを使用し、ソートされたデータをコンソールに表示する

  1. tLogRowコンポーネントを追加し、[Main]を使用してtSortRowコンポーネントに接続します。
  2. tLogRowコンポーネントの[Component]ビューを開くには、コンポーネントをダブルクリックします。
  3. [Mode]パネルで[Table]を選択します。

これで、ジョブを実行する準備ができました。ジョブは、最初にデータを生成してHDFSに書き込みます。次に、HDFSからデータを読み取り、ソートしてコンソールに表示します。

7.ジョブを実行し、コンソールで結果を確認する

  1. ジョブを実行するには、[Run]ビューで[Run]をクリックします。
  2. ソートされたデータがコンソールに表示されます。