DPワークフローへのSerDe jarの追加

このトピックでは、データ処理(DP)クラスパスへのカスタムSerDeの追加プロセスについて説明します。

顧客がHive表を作成する場合、自分で選択したシリアライザ-デシリアライザ(SerDe)クラス(データ処理パッケージには付属していないSerDe)を指定できます。たとえば、次の文の最後の部分について考えます。
CREATE TABLE samples_table(id INT, city STRING, country STRING, region STRING, population INT)
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.JsonSerde';

このSerDes jarがEDPインストールにパッケージ化されていない場合、データ処理の実行時にそのHive表を読み込むことができないため、Dgraphにデータをインポートできなくなります。この問題を解決するには、カスタムSerDeをOozieデータ処理ワークフローに統合します。

この手順では、次の2つの条件を前提としています。
  • BDDデータ処理アーティファクトがクラスタ上に存在する必要があります(たとえば、HDFSパス/home/username/oozieEdpLib上。これは、data_processing_CLI変数hdfsEdpLibPathが指し示している場所です)。
  • SerDeをデータ処理と統合する前に、SerDe jarがクラスタのHiveノード上に存在する必要があります。このSerDe内に作成された表の場合、表に対してSELECT *問合せを実行しても、この問合せがHueを介して指定されるかHive CLIから送信されるかとは関係なく、エラーが発生しない必要があります。

カスタムSerDe jarをOozieデータ処理ワークフローに統合するには:

  1. SerDe jarをhdfsEdpLibPathディレクトリ(クラスタ側のすべてのDP jarが格納されている場所)にコピーします。
  2. HDFS上のhdfsEdpLibPathで、spark_worker_files.txtおよびedp_classpathファイルを編集し、SerDe jar名が含まれるようにします。
    Hueファイル・ブラウザ内のファイルを編集するには、ファイルをクリックします。次に、左側のペインに「ファイルの編集」オプションが表示されます。
    データ処理CLIが実行されているクライアント・マシン上のファイルを編集する必要はありません。

この結果、SerDe jarがDPクラスパス内に含まれます。つまり、DPワークフローが自動的に開始されるか、Studioによって開始されるか、またはDP CLIを実行することによって開始されるかとは関係なく、すべてのDPワークフローでSerDeが使用されるようになります。