データ・インポート構成 XML

データウェアハウスから Hadoop へのデータのインポートを構成する XML ファイルのカスタマイズ方法について説明します。

一般構成

  • fq.command プロパティーは、データ移動のタイプを設定します。このタイプにはインポート (ウェアハウス→ Hadoop) とエクスポート (Hadoop →ウェアハウス) があります。
    <property>
    	<name>fq.command</name>
    	<value>import</value>
    </property>

HDFS 情報

  • fq.output.path プロパティーは、転送されたデータが格納される HDFS 上のディレクトリーを設定します。
    <property>
    	<name>fq.output.path</name>
    	<value>/dbbackup/backup1</value>
    </property>
  • fq.format.fielddelim プロパティーは、プレーン・テキスト出力ファイル内の単一文字フィールド区切り文字の ASCII 値を設定します。
    <property>
    	<name>fq.format.fielddelim</name>
    	<value>124</value>
    </property>
    注: このプロパティーの値として 32 (スペース) を設定することはお勧めしません。
  • fq.format.null プロパティーは、NULL 値を表す方法を定義します。デフォルトは NULL です。値は 4 文字以内でなければなりません。
    <property>
    	<name>fq.format.null</name>
    	<value>NULL</value>
    </property>
  • fq.fs.temp プロパティーは、HDFS 上の一時ファイル (ログや状況ファイルなど) の場所を設定します。
    <property>
    	<name>fq.fs.temp</name>
    	<value>/tmp</value>
    </property>
  • fq.hive.schema プロパティーは、インポートされたすべての表の作成に使用する、Hive 内のターゲット・スキーマ名を設定します。
    <property>
    	<name>fq.hive.schema</name>
    	<value></value>
    </property>
    このプロパティーがない場合は、自動的に作成されます。このプロパティーを設定しないと、デフォルト・スキーマが使用されます。
  • fq.hive.tablename プロパティーはオプションです。このプロパティーは、Hive 内の出力表名を定義します。指定しないと、ソース表名が使用されます。このプロパティーは特に、名前に特殊文字が含まれる表を 0.13.0 より前のバージョンの Hive にインポートする場合に使用します。
    <property>
    	<name>fq.hive.tablename</name>
    	<value>Test</value>
    </property>

圧縮オプション

  • オプション fq.compress は、該当する圧縮モードが現在サポートされていないので、設定できません。
  • fq.output.compressed プロパティーは、転送されたデータを圧縮フォーマットで Hadoop 上に格納するかどうかを定義します。 このプロパティーは、 Hadoop 固有のフォーマットを指定する fq.data.format と併用されます。使用するフォーマットに応じて、以下のいずれかの値を選択します。
    • PARQUET: Snappy、gzip、uncompressed
    • ORC: NONE、ZLIB、SNAPPY
    • RCFILE: この値には、Hadoop システムで使用できる、正確なコーデックのクラス名を含める必要があります。例えば、org.apache.hadoop.io.compress.SnappyCodec のようにします。
    • AVRO: snappy、deflate
    • SEQUENCEFILE: この値には、Hadoop システムで使用できる、正確なコーデックのクラス名を含める必要があります。例えば、org.apache.hadoop.io.compress.SnappyCodec のようにします。
    また、このプロパティーは false に設定することも、空のままにすることもできます。その場合、Hadoop で選択したフォーマットについて指定されているデフォルトの圧縮タイプが使用されます。
    <property>
    	<name>fq.output.compressed</name>
    	<value>false</value>
    </property>
  • fq.data.format は、転送されたデータが Hadoop 上に格納される際のフォーマットを定義します。このプロパティーのサポートされている値は、以下のとおりです。
    • TXT - データウェアハウスの厳密なフォーマットの場合。
    • PARQUETORCRCFILEAVROSEQUENCEFILE - Hadoop 固有のフォーマットの場合。
    <property>
    	<name>fq.data.format</name>
    	<value>TXT</value>
    </property>

ウェアハウス情報

  • fq.pda.db プロパティーはデータウェアハウス・データベース名を設定します。複数のデータベース名を区切り文字で区切った場合、前後に二重引用符を使用します。
    <property>
    	<name>fq.pda.db</name>
    	<value>bludb</value>
    </property>
  • fq.tables プロパティーは、インポートされるウェアハウス表のコンマ区切りリストを提供します。複数の表名を区切り文字で区切った場合、前後に二重引用符を使用します。
    <property>
    	<name>fq.tables</name>
    	<value>ADMIN.tab</value>
    </property>
    この値のフォーマットは、<SCHEMA>.<table> です。複数のスキーマと表の組み合わせの場合、フィルターとして fq.tables プロパティー内にアスタリスク (*) 文字を使用できます。以下に例を示します。
    • S1.T1 - スキーマ S1 内の表 T1 をインポート
    • S1.* - スキーマ S1 からすべての表をインポート
    • *.T1 - すべてのスキーマからすべての表 T1 をインポート
    • * - 現在ログインしているユーザーの現行スキーマからすべての表をインポート
    フィルター処理のためにスキーマ名や表名の一部として * を指定することはできません。例えば、S1.a* を「スキーマ S1 内の、名前の先頭が a であるすべての表」という意味で使用すると想定します。システムはこのようなフィルターを解釈できず、a* は表名そのものとして解釈されます。
  • fq.pda.server プロパティーは、ウェアハウス・サーバーのウォール IP アドレスまたは完全修飾ホスト名を設定します。
    <property>
    	<name>fq.pda.server</name>
    	<value>hostname.ibm.com</value>
    </property>
  • fq.pda.port プロパティーは、ウェアハウス・データベース・インスタンス NZ_DBMS_PORT のポート番号を設定します。
    <property>
    	<name>fq.pda.port</name>
    	<value>50000</value>
    </property>
  • fq.pda.user プロパティーは、データベースにアクセスするためのウェアハウス・データベース・ユーザー・アカウント名を設定します。
    <property>
    	<name>fq.pda.user</name>
    	<value>bluadmin</value>
    </property>
  • fq.pda.password プロパティーは、ウェアハウス・データベース・ユーザー・アカウントのパスワードを設定します。
    <property>
    	<name>fq.pda.password</name>
    	<value>password</value>
    </property>
  • fq.pda.ssl.cacertificate プロパティーは、HDFS に格納されて接続の認証に使用される CA 証明書ファイルへの絶対パスを設定します。SSL フラグが true の場合にのみ使用します。指定しないと、すべての接続が受け入れられます。
    <property>
    	<name>fq.pda.ssl.cacertificate</name>
    	<value></value>
    </property>
  • fq.pda.where プロパティーは、転送対象のデータを選択するために使用される SQL WHERE 節を指定します。このプロパティーはインポート専用で、エクスポートには使用しません。
    <property>
    	<name>fq.pda.where</name>
    	<value></value>
    </property>
  • fq.splits プロパティーは、ウェアハウス・ホストに対する同時 JDBC ロード・セッションの数を設定します。
    <property>
    	<name>fq.splits</name>
    	<value>12</value>
    </property>
  • fq.custom.exttab.options は上級者向けのオプション・パラメーターです。このパラメーターを使用すると、外部表に対するユーザー定義のオプションを指定できます。設定できるすべての外部表のオプションと値は、CREATE EXTERNAL TABLE にリストされています。 外部表オプションとその値のペアを複数指定する場合、スペースで区切ります。
    注: fq.custom.exttab.options パラメーターで指定したオプションは、Fast Data Movement コード内に対応するオプションがあればそれを上書きします。
    <property>
    	<name>fq.custom.exttab.options</name>
    	<value>MaxErrors 1 SocketBufSize 8000000</value>
    </property>
  • fq.break.on.error プロパティーを true に設定すると、複数の表やデータベース全体のインポート中にエラーが発生した場合にインポートの実行を停止します。インポートが終了すると、転送された表に関する情報が表示されます。
    <property>
    	<name>fq.break.on.error</name>
    	<value>false</value>
    </property>
  • fq.append.mode プロパティーは、指定された HDFS の場所にデータを転送する方法を指定します。このプロパティーには以下の値を指定できます。
    • create インポート時に、ターゲット・データベース内に新しい表が作成されます。同じ名前の表が既存の場合、インポートは失敗します。
    • overwrite インポート時に、表がソース・データベースからターゲット・データベースにインポートされ、同じ名前の表がターゲット・データベース内で既存の場合、その表は置き換えられます (上書きされます)。
    • append データがソース表からターゲット表にインポートされ、既存のレコードに付加されます。つまり、同じ名前の表がターゲット・データベース内に既存の場合は、すべてのデータがソース表から既存の表に追加 (付加) されます。
    付加モードの詳細については、インポート時とエクスポート時の付加モードを参照してください。
    このプロパティーのデフォルト値は create です。
    <property>
    	<name>fq.append.mode</name>
    	<value>overwrite</value>
    </property>
  • fq.sql.metadata プロパティーは、インポート時に IBM® Fast Data Movement が Hive 内に表を作成するかどうかを定義します。デフォルトでは、true に設定されます。
    <property>
    	<name>fq.sql.metadata</name>
    	<value>true</value>
    </property>
    このプロパティーを false に設定すると、Hive 内に表が作成されず、IBM Fast Data Movement はデータ・ファイルをインポートして HDFS に挿入することのみ実行します。

Hive オプション

  • fq.hive.usevarchar プロパティーは、VARCHAR 列の変換規則を判別します。VARCHAR 型は Hive バージョン 0.12 以降でサポートされています。このプロパティーを true に設定すると、インポート後にデータ型は VARCHAR になります。false の場合、データ型は STRING に変換されます。VARCHAR データ型に関する制限事項で説明されているように、VARCHAR の使用時には複数の制限があるので、デフォルト値は false になっています。
    <property>
            <name>fq.hive.usevarchar</name>
            <value>false</value>
        </property> 
  • fq.hive.usedate プロパティーは、DATE 列の変換規則を判別します。Hive バージョン 0.12 以上の場合、パラメーターを true に設定すると、DATE を STRING の代わりに Hive DATE にマップできます。デフォルトでは、この値は false に設定されています。
    <property>
            <name>fq.hive.usedate</name>
            <value>false</value>
        </property> 
  • fq.hive.clustered.by パラメーターは、クラスタリングに使用される表の列をリストします。デフォルトのクラスタリングを有効にするには、このプロパティーを空のままにして、fq.hive.cluster.buckets を設定します。
    <property>
            <name>fq.hive.clustered.by</name>
            <value></value>
        </property>
  • fq.hive.clustered.buckets パラメーターは、クラスタリング時に作成できるバケットの量を決める整数値を指定します。クラスタリングを有効にするには、このプロパティーを設定する必要があります。
    <property>
            <name>fq.hive.clustered.buckets</name>
            <value></value>
        </property>
  • fq.hive.partitioned.by パラメーターは、パーティション化に使用される表の列をリストします。
        <property>
            <name>fq.hive.partitioned.by</name>
            <value></value>
        </property>

Hadoop JDBC 接続 (リモート接続) のプロパティー

  • fq.sql.server プロパティーは、インポートされた表が作成される、Hadoop 上の Hive サーバー・アドレスを設定します。
    <property>
    	<name>fq.sql.server</name>
    	<value>rack1-master</value>
    </property>
  • fq.sql.port プロパティーは、Hadoop 上の Hive サーバー・ポート番号を設定します。
    <property>
    	<name>fq.sql.port</name>
    	<value>10000</value>
    </property>
  • fq.sql.type プロパティーは、サーバー・タイプを設定します。サポートされているタイプは hive2 または bigsql です。
    <property>
    	<name>fq.sql.type</name>
    	<value>hive2</value>
    </property>
    注: このプロパティーは、リモート・インポートの場合に使用し、エクスポートには使用しません。

JDBC 認証プロパティー

注: ユーザーとパスワードの値か、Kerberos サービス・プリンシパル名の値のいずれかを指定する必要があります。
  • fq.sql.user プロパティーは、ユーザー名を設定します。ユーザー/パスワード認証を使用しようとしている場合は、このプロパティーは必須です。
    <property>
    	<name>fq.sql.user</name>
    	<value>biadmin</value>
    </property>
  • fq.sql.password プロパティーは、パスワードを設定します。ユーザー名を指定した場合は、このプロパティーは必須です。
    <property>
    	<name>fq.sql.password</name>
    	<value>passw0rd</value>
    </property>

JDBC SSL プロパティー

  • fq.sql.ssl プロパティーは、選択された Hadoop SQL サーバーへの接続に SSL が必要かどうかを定義します。値は true または false です。
    <property>
    	<name>fq.sql.ssl</name>
    	<value>false</value>
    </property>
  • fq.sql.sslTrustStore プロパティーは、使用される SSL トラストストアへのパスを設定します。
    <property>
    	<name>fq.sql.sslTrustStore</name>
    	<value>$HIVE_HOME/src/data/files/cacerts_test.jks</value>
    </property>
  • fq.sql.sslTrustStorePassword プロパティーは、指定された SSL トラストストアに対するパスワードを設定します。
    <property>
    	<name>fq.sql.sslTrustStorePassword</name>
    	<value>passw0rd</value>
    </property>

Hadoop リモート実行の設定

  • fq.hadoop.remote.user パラメーターは、Hadoop 以外のシステムからデータ移動を実行する場合に使用します。このパラメーターは、データ移動を実行するリモート Hadoop ユーザー名を指定します。このユーザーには、HDFS に対するアクセス権が必要です。
    <property>
            <name>fq.hadoop.remote.user</name>
            <value></value>
        </property>
  • fq.hadoop.client.configs パラメーターは、Hadoop 以外のシステムからデータ移動を実行する場合に使用します。このパラメーターは、ダウンロードしたクライアント構成ファイルへのパスを指定します。
        <property>
            <name>fq.hadoop.client.configs</name>
            <value></value>
        </property>
    

JDBC Kerberos プロパティー

  • fq.kerberos.principal プロパティーは、Kerberos プリンシパル名を設定します。Kerberos 認証を使用する必要がある場合は必須です。
    <property>
            <name>fq.kerberos.principal</name>
            <value>hdfs/rack1-master.hadoop.ibm.com@REALM.IBM.COM</value>
        </property>
  • fq.kerberos.keytab プロパティーは、Kerberos キータブを設定します。Kerberos 認証を使用する必要がある場合は必須です。
    <property>
            <name>fq.kerberos.keytab</name>
            <value>/path/to/your/client.keytab</value>
        </property> 
  • fq.sql.spn プロパティーは、Kerberos サービス・プリンシパル名を設定します。Kerberos 認証を使用しようとしている場合は、このプロパティーは必須です。
    <property>
    	<name>fq.sql.spn</name>
    	<value>hive/horton-master.ibm.com@XXXXXX.IBM.COM</value>
    </property>

追加の設定

  • fq.db2.lock.table プロパティーを使用すると、ソース表と宛先表の間のデータの整合性が保証されます。true に設定すると、データ移動時にユーザーがソース表を変更 (挿入または更新) することはできません。false に設定すると、この種のロックは無効になります。デフォルトでは fq.db2.lock.table は true に設定されます。
    <property>
    <name>fq.db2.lock.table</name>
    <value>true</value>
    </property>
注: BigSQL の使用時には、以下のプロパティーを fq-import-remote-conf.xml ファイルに追加する必要が生じる場合があります。
<property>
<name>fq.sql.bigsql.v3compatibility</name>
<value>true</value>
</property>
BigInsights での 10 進値に関する制限で説明されているように、このプロパティーは NUMERIC フィールドのマッピングに関する問題を解決します。