Hive 出力コンポーネントは、Hive データソースにデータを書き込みます。他のデータソースから Hive データソースにデータを同期する場合、ソースデータソース情報を構成した後、ターゲット Hive データソースを構成する必要があります。このトピックでは、Hive 出力コンポーネントを構成する方法について説明します。
制限事項
Hive 出力コンポーネントは、orc、parquet、text、Hudi(Hudi 形式は Cloudera Data Platform 7.x Hive 計算ソースまたはデータソースのみをサポート)、iceberg(iceberg 形式は E-MapReduce 5.x Hive 計算ソースまたはデータソースのみをサポート)のファイル形式を持つ Hive データテーブルへの書き込みをサポートしています。ORC 形式のトランザクショナルテーブルまたは Kudu テーブル統合はサポートしていません。
Kudu テーブルデータ統合の場合は、Impala 出力コンポーネントを使用します。詳細については、「Impala 出力コンポーネントを構成するImpala 出力コンポーネントを構成する」をご参照ください。
前提条件
Hive データソースを作成済みであること。詳細については、「Hive データソースを作成する」をご参照ください。
Hive 出力コンポーネントのプロパティを構成するために使用するアカウントは、データソースに対するリードスルー権限を持っている必要があります。権限がない場合は、データソース権限をリクエストする必要があります。詳細については、「データソース権限をリクエストする」をご参照ください。
手順
Dataphin ホームページの上部ナビゲーションバーで、[開発] > [Data Integration] を選択します。
統合ページの上部のナビゲーションバーで、[プロジェクト] を選択します (Dev-Prod モードでは、[環境] を選択する必要があります)。
左側のナビゲーションウィンドウで [バッチパイプライン] をクリックし、[バッチパイプライン] リストで開発対象の オフラインパイプライン をクリックして、オフラインパイプラインの構成ページを開きます。
ページの右上隅にある [コンポーネントライブラリ] をクリックして、[コンポーネントライブラリ] パネルを開きます。
[コンポーネントライブラリ] パネルの左側のナビゲーションウィンドウで、[出力] を選択し、右側の出力コンポーネントリストで [Hive] コンポーネントを見つけて、キャンバスにドラッグします。
ターゲット入力、変換、またはフローコンポーネントの
アイコンをクリックしてドラッグし、現在の Hive 出力コンポーネントに接続します。
Hive 出力コンポーネントカードの
アイコンをクリックして、[Hive 出力構成] ダイアログボックスを開きます。
[Hive 出力構成] ダイアログボックスで、パラメーターを構成します。
Hive テーブルと Hudi テーブルに必要なパラメーターは異なります。
出力ターゲットテーブルが Hive テーブルの場合
パラメーター
説明
基本設定
ステップ名
Hive 出力コンポーネントの名前。Dataphin は自動的にステップ名を生成しますが、ビジネスシナリオに基づいて変更できます。名前は次の要件を満たしている必要があります。
中国語、英字、アンダースコア(_)、数字のみを含めることができます。
長さは 64 文字を超えることはできません。
データソース
データソースドロップダウンリストには、書き込みスルー権限が既に付与されているデータソースと、書き込みスルー権限が付与されていないデータソースを含む、すべての Hive タイプのデータソースが表示されます。
アイコンをクリックして、現在のデータソース名をコピーします。
書き込みスルー権限のないデータソースの場合、データソースの後に [リクエスト] をクリックして、データソースの書き込みスルー権限をリクエストできます。詳細については、「データソース権限をリクエストする」をご参照ください。
Hive タイプのデータソースがない場合は、[データソースの作成] をクリックしてデータソースを作成します。詳細については、「Hive データソースを作成する」をご参照ください。
テーブル
出力データのターゲットテーブル(Hive テーブル)を選択します。キーワードを入力してテーブルを検索するか、正確なテーブル名を入力して [完全一致] をクリックします。テーブルを選択すると、システムは自動的にテーブルステータスをチェックします。
アイコンをクリックして、現在選択されているテーブルの名前をコピーします。
Hive データソースにデータ同期のターゲットテーブルがない場合は、ワンクリックテーブル作成機能を使用してターゲットテーブルをすばやく生成できます。次の手順を実行します。
[ワンクリックテーブル作成] をクリックします。Dataphin は、ターゲットテーブル名(デフォルトはソーステーブル名)、フィールドタイプ(最初は Dataphin フィールドに基づいて変換されます)、その他の情報を含む、ターゲットテーブルを作成するためのコードを自動的に一致させます。
[データレイクテーブル形式] を [選択しない] または [Iceberg] に設定します。
説明Iceberg オプションは、選択したデータソースまたは現在のプロジェクトで使用されている計算ソースでデータレイクテーブル形式が有効になっており、Iceberg に設定されている場合にのみ使用できます。
[実行エンジン] を [Hive] または [Spark] に設定します。
説明データレイクテーブル形式が Iceberg に設定されている場合にのみ、実行エンジンを選択できます。デフォルトの実行エンジンは Hive です。選択したデータソースで Spark が有効になっている場合は、Spark を選択できます。
選択したデータレイクテーブル形式と実行エンジンに基づいて DDL が自動的に生成されます。必要に応じて変更し、[作成] をクリックします。
ターゲットテーブルが正常に作成されると、Dataphin は新しく作成されたターゲットテーブルを、出力データのターゲットテーブルとして自動的に設定します。ワンクリックテーブル作成は、開発環境と本番環境でデータ同期のターゲットテーブルを作成するために使用されます。Dataphin はデフォルトで本番環境テーブル作成を選択します。本番環境に同じ名前と構造のテーブルが既に存在する場合は、本番環境テーブル作成を選択する必要はありません。
説明開発環境または本番環境に同じ名前のテーブルが存在する場合、[作成] をクリックすると、Dataphin はテーブルが既に存在することを示すエラーを報告します。
一致する項目がない場合は、手動で入力したテーブル名に基づいて統合することもできます。
ファイルエンコーディング
Hive にファイルを保存するためのエンコード方式。 [ファイルエンコーディング] には、[UTF-8] と [GBK] が含まれます。
ロードポリシー
ターゲットデータソース(Hive データソース)にデータを書き込むためのポリシー。ロードポリシーには、[すべてのデータを上書き]、[データを追加]、[統合タスクによって書き込まれたデータのみを上書き] が含まれます。シナリオは次のとおりです。
[すべてのデータを上書き]:最初にターゲットテーブルまたはパーティション内のすべてのデータを削除し、テーブル名で始まる新しいデータファイルを追加します。
[データを追加]:ターゲットテーブルにデータを直接追加します。
[統合タスクによって書き込まれたデータのみを上書き]:最初にターゲットテーブルまたはパーティション内のテーブル名で始まるデータファイルを削除します(SQL または他の方法で書き込まれたデータは削除されません)。
NULL 値の置換(オプション)
textfile
データストレージ形式のソーステーブルのみをサポートします。NULL
に置き換える必要がある文字列を入力します。たとえば、\N
を入力すると、システムは\N
文字列をNULL
に置き換えます。フィールド区切り文字(オプション)
textfile
データストレージ形式のソーステーブルのみをサポートします。フィールド間の区切り文字を入力します。値を入力しない場合、システムはデフォルトの区切り文字として\u0001
を使用します。圧縮形式(オプション)
ファイルの圧縮形式を選択します。サポートされている圧縮形式は、Hive のデータストレージ形式によって異なります。
データストレージ形式が [orc] の場合:サポートされている圧縮形式には、[zlib] と [snappy] が含まれます。
データストレージ形式が [parquet] の場合:サポートされている圧縮形式には、[snappy] と [gzip] が含まれます。
データストレージ形式が [textfile] の場合:サポートされている圧縮形式には、[gzip]、[bzip2]、[ Lzo]、[lzo_deflate]、[hadoop-snappy]、[zlib] が含まれます。
フィールド区切り文字処理(オプション)
textfile
データストレージ形式の出力テーブルのみをサポートします。データにデフォルトまたはカスタムのフィールド区切り文字が含まれている場合、[フィールド区切り文字処理] 戦略を構成して、データ書き込みエラーを防ぐことができます。[保持]、[削除]、または [次で置換] を選択できます。行区切り文字処理(オプション)
textfile
データストレージ形式の出力テーブルのみをサポートします。データにデフォルトまたはカスタムのフィールド区切り文字が含まれている場合、[行区切り文字処理] 戦略を構成できます。デフォルトの行区切り文字は\n
です。データに\r
や\n
などの改行文字が含まれている場合は、データ書き込みエラーを防ぐために処理戦略を選択できます。[保持]、[削除]、または [次で置換] を選択できます。Hadoop パラメーター構成(オプション)
書き込みパラメータを調整するために使用されます。テーブルタイプごとに異なるパラメータを入力できます。複数のパラメータはコンマ(,)で区切り、
{"key1":"value1", "key2":"value2"}
の形式で指定します。たとえば、出力テーブル形式が orc で、フィールドが多いシナリオでは、メモリサイズに基づいて{"hive.exec.orc.default.buffer.size"}
パラメータを調整できます。メモリが十分にある場合は、この構成を増やして書き込みパフォーマンスを向上させることができます。メモリが不足している場合は、この構成を減らして GC 時間を短縮し、書き込みパフォーマンスを向上させることができます。デフォルト値は 16384Byte(16KB)で、262144Byte(256KB)を超えないようにすることをお勧めします。パーティション
選択したターゲットテーブルがパーティションテーブルの場合は、パーティション情報を入力する必要があります。たとえば、
state_date=20190101
です。毎日増分データの書き込みを許可するためにパラメータもサポートされています。たとえば、state_date=${bizdate}
です。準備ステートメント(オプション)
データインポートの前にデータベースで実行される SQL スクリプト。
たとえば、継続的なサービスの可用性を確保するために、現在のステップがデータを書き込む前に、最初にターゲットテーブル Target_A を作成し、次にターゲットテーブル Target_A への書き込みを実行します。現在のステップがデータの書き込みを完了した後、継続的にサービスを提供しているテーブル Service_B の名前を Temp_C に変更し、次にテーブル Target_A の名前を Service_B に変更し、最後に Temp_C を削除します。
完了ステートメント(オプション)
データインポート後にデータベースで実行される SQL スクリプト。
フィールドマッピング
入力フィールド
上流コンポーネントの出力に基づいて入力フィールドを表示します。
出力フィールド
出力フィールド領域には、選択したテーブルのすべてのフィールドが表示されます。
重要データが Hive に正しく書き込まれるように、すべての出力フィールドを入力コンポーネントのフィールドにマップする必要があります。
マッピング
上流入力とターゲットテーブルフィールドに基づいて、フィールドマッピングを手動で選択できます。 [マッピング] には、[同じ行のマッピング] と [同じ名前のマッピング] が含まれます。
同じ名前のマッピング: 同じフィールド名のフィールドをマッピングします。
同一行マッピング: ソーステーブルとターゲットテーブルのフィールド名が一致しない場合でも、対応する行のデータをマッピングする必要がある場合に、同じ行のフィールドをマッピングします。
出力ターゲットテーブルが Hudi テーブルの場合
パラメーター
説明
基本設定
ステップ名
Hive 出力コンポーネントの名前。Dataphin は自動的にステップ名を生成しますが、ビジネスシナリオに基づいて変更できます。名前は次の要件を満たしている必要があります。
中国語、英字、アンダースコア(_)、数字のみを含めることができます。
長さは 64 文字を超えることはできません。
データソース
データソースドロップダウンリストには、書き込みスルー権限が既に付与されているデータソースと、書き込みスルー権限が付与されていないデータソースを含む、すべての Hive タイプのデータソースが表示されます。
アイコンをクリックして、現在のデータソース名をコピーします。
書き込みスルー権限のないデータソースの場合、データソースの後に [リクエスト] をクリックして、データソースの書き込みスルー権限をリクエストできます。詳細については、「データソース権限をリクエストする」をご参照ください。
Hive タイプのデータソースがない場合は、[データソースの作成] をクリックしてデータソースを作成します。詳細については、「Hive データソースを作成する」をご参照ください。
テーブル
出力データのターゲットテーブル(Hudi テーブル)を選択します。キーワードを入力してテーブルを検索するか、正確なテーブル名を入力して [完全一致] をクリックします。テーブルを選択すると、システムは自動的にテーブルステータスをチェックします。
アイコンをクリックして、現在選択されているテーブルの名前をコピーします。
Hive データソースにデータ同期のターゲットテーブルがない場合は、ワンクリックテーブル作成機能を使用してターゲットテーブルをすばやく生成できます。次の手順を実行します。
[ワンクリックテーブル作成] をクリックします。Dataphin は、ターゲットテーブル名(デフォルトはソーステーブル名)、フィールドタイプ(最初は Dataphin フィールドに基づいて変換されます)、その他の情報を含む、ターゲットテーブルを作成するためのコードを自動的に一致させます。
[データレイクテーブル形式] を [Hudi] に設定します。
[Hudi テーブルタイプ]:[MOR(マージオンリード)] または [COW(コピーオンライト)] を選択できます。デフォルトは MOR(マージオンリード)です。
プライマリキーフィールド(オプション):プライマリキーフィールドをコンマ(,)で区切って入力します。
[拡張プロパティ](オプション):Hudi 公式でサポートされている構成プロパティを
k=v
の形式で入力します。説明開発環境または本番環境に同じ名前のテーブルが存在する場合、[作成] をクリックすると、Dataphin はテーブルが既に存在することを示すエラーを報告します。
一致する項目がない場合は、手動で入力したテーブル名に基づいて統合することもできます。
[実行エンジン] を [Hive] または [Spark] に設定します。
説明データレイクテーブル形式が Hudi に設定されている場合にのみ、実行エンジンを選択できます。デフォルトの実行エンジンは Hive です。選択したデータソースで Spark が有効になっている場合は、Spark を選択できます。
選択したデータレイクテーブル形式と実行エンジンに基づいて DDL が自動的に生成されます。必要に応じて変更し、[作成] をクリックします。
パーティション
選択したターゲットテーブルがパーティションテーブルの場合は、パーティション情報を入力する必要があります。たとえば、
state_date=20190101
です。パラメータもサポートされており、毎日増分データの書き込みが可能です。たとえば、state_date=${bizdate}
です。ロードポリシー
ターゲットデータソース(Hive データソース)にデータを書き込むためのポリシー。[データの上書き]、[データの追加]、[データの更新] があります。
[データの上書き]:既存のデータを新しいデータで上書きします。
[データの追加]:ターゲットテーブルにデータを直接追加します。
[データの更新]:プライマリキーで更新し、データが存在しない場合は挿入します。
説明SQL または他の方法で書き込まれたデータは削除されません。
Hadoop パラメーター構成(オプション)
書き込みパラメータを調整するために使用されます。テーブルタイプごとに異なるパラメータを入力できます。複数のパラメータはコンマ(,)で区切り、
{"key1":"value1", "key2":"value2"}
の形式で指定します。{"hoodie.parquet.compression.codec":"snappy"}
パラメータを使用して、圧縮形式を snappy に調整できます。BulkInsert
大量データのバッチ同期シナリオに適しており、通常は初期データインポートに使用されます。
説明このオプションは、ロードポリシーが [データの追加] または [データの上書き]に設定されている場合にのみ使用でき、デフォルトで有効になっています。
フィールドマッピング
入力フィールド
上流コンポーネントの出力に基づいて入力フィールドを表示します。
出力フィールド
出力フィールド領域には、選択したテーブルのすべてのフィールドが表示されます。
説明Hudi テーブルでは、すべてのフィールドをマップする必要はありません。
マッピング
上流入力とターゲットテーブルフィールドに基づいて、フィールドマッピングを手動で選択できます。 [マッピング] には、[同じ行のマッピング] と [同じ名前のマッピング] が含まれます。
同じ名前のマッピング: 同じフィールド名のフィールドをマッピングします。
同一行マッピング: ソーステーブルとターゲットテーブルのフィールド名が一致しない場合でも、対応する行のデータをマッピングする必要があるときに、同じ行のフィールドをマッピングします。
[OK] をクリックして、Hive 出力コンポーネントのプロパティ構成を完了します。