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