8 例: Oracle NoSQL Database表に対するHive問合せ

この項では、Oracle NoSQL Databaseストアにある様々な表(非セキュアまたはセキュア)に格納されたデータを問い合せるようにHiveを構成する方法の例を示します。プリミティブ・データ型 - vehicleTableの例には、プリミティブOracle NoSQL Databaseデータ型のみが含まれており、基本的なHive問合せの調査を開始する場合に適しています。非プリミティブ・データ型 - rmvTableの例には、プリミティブ・データ型と非プリミティブ・データ型が混在しており、より複雑なデータを問い合せる方法を示します。最後に、NoSQL JSONデータ型 - exampleJsonTableの例では、Oracle NoSQL Databaseに書き込まれたJSONドキュメントの問合せ方法に焦点を当てます。

ここで説明する問合せを実行する前に、次の最初のステップを実行して、HiveとOracle NoSQL Databaseとの統合用にシステムを設定する必要があります。
  • 必要な前提条件を満たします。「前提条件」を参照してください。
  • 付録「非セキュア・ストアのデプロイ」または付録「セキュア・ストアのデプロイ」の指示に従って、Oracle NoSQL Databaseの非セキュア・ストアまたはセキュア・ストアをデプロイします。
  • 付録「CountTableRowsのサポート・プログラム」の指示に従って、デプロイしたストアにvehicleTableという名前の表を作成し、データを移入します。
  • 付録「rmvTableの作成および移入」の指示に従って、デプロイしたストアにrmvTableという名前の表を作成し、データを移入します。
  • 付録「exampleJsonTableの作成および移入」の指示に従って、デプロイしたストアにexampleJsonTableという名前の表を作成し、データを移入します。
  • 付録「Hiveクライアント環境の構成」の指示に従って、デプロイしたOracle NoSQL Databaseストアに格納されているデータの問合せに必要なOracle NoSQL DatabaseライブラリにアクセスできるようにHiveクライアント環境を構成します。
  • デプロイしたストアがセキュア・アクセス用に構成されている場合は、付録「HiveおよびOracle NoSQL Databaseのセキュリティ」に記載されているステップに従って、セキュア・ストアとの相互作用に必要な環境およびアーティファクトを使用してHiveを構成します。

これらの最初のステップを実行した後、次の各項では、Hive外部表を作成してOracle NoSQL Databaseで作成した表にマップするためのHiveコマンドを示し、Hiveを使用してそれらの表に格納されているデータを問い合せる方法を示します。

提示されるHiveコマンドについて、次の一般的な点に注意してください。
  • 次に示すHiveコマンドの内容は、読みやすさを考慮して個別の行に表示されています。実際には、Hiveコマンド・インタプリタで複数行コマンドの処理に問題が発生する可能性があるため、通常は改行を使用せずに単一の連続したコマンドを入力することをお薦めします。
  • コマンドを実行してHive外部表を作成する場合は、oracle.kv.tableNameプロパティを使用して、問い合せるOracle NoSQL Databaseストア内の表の名前をHiveに指定します(Hive表に指定する名前は、対応するOracle NoSQL Database表の名前と同じである必要はありません)。例では、両方の組合せを使用しています。名前が異なる場合は、シナリオを説明する名前を使用しました。
  • Oracle NoSQL Databaseストアが複数の管理ホストで構成されている場合は、有効な管理ホストおよびポートが少なくとも1つ含まれているかぎり、これらのホストの名前のサブセットをコマンドで指定されたoracle.kv.hostsプロパティの値に含めることができます。
  • oracle.kv.hadoop.hostsという名前のプロパティに関して、次の点に注意してください。
    • 現在、Big Data SQLシステムを除くすべてのシステムで、そのプロパティはオプションです。
    • プロパティを必要としないシステムでそのプロパティを指定しても効果はありません。
    • プロパティが必要なBig Data SQLシステムまたはその他のシステムでプロパティが指定されている場合は、プロパティの値に、Hadoopクラスタを構成するすべてのデータ・ノードの名前が含まれている必要があります。『Big Data SQLユーザーズ・ガイド』を参照してください。
各Hiveコマンドが実行される様々なシナリオと、各シナリオで特定のコマンドがどのように異なるかを理解することが重要です。これは、Oracle NoSQL Database表にマップされたHive外部表の作成に使用されるコマンドには異なるパラメータが必要であり、次のいずれかの条件を満たしているのかによって、指定されるパラメータが異なるためです。
  • Oracle NoSQL Databaseストアは非セキュアです。
  • Oracle NoSQL Databaseストアはセキュアで、Hiveクライアントのパスワードは次の場所にあります。
    • パスワード・ファイルに格納されています。
    • Oracle Walletに格納されています。

非セキュア・シナリオとセキュア・シナリオの違いを理解するには、Hive外部表を非セキュア・ストア内の表にマップする際に使用するコマンドと、2つの個別のHive表をセキュア・ストア内の単一の表にマップする際に使用するコマンドを比較することが役立ちます。

例の各シナリオの各コマンドは、表7-1で指定されている同じHiveデータ・モデル・マッピングを適用して、3つの異なるHive外部表を作成します。各表の構造、スキーマおよび属性は同じになります。

非セキュア・シナリオで作成された表とセキュア・シナリオで作成された2つの表の唯一の違いは、Hive表名に指定された値(vehicleTablevehicleTablePasswdvehicleTableWalletなど)、および目的のHive表を作成するためにセキュア・ストアとの通信に必要なセキュリティ・アーティファクトが必要かどうかです。

具体的には、Hive外部表を作成してOracle NoSQL Databaseセキュア・ストア内の表にマップする場合、Hive CREATE EXTERNAL TABLEコマンドのTBLPROPERTIESディレクティブには、次の追加のセキュリティ関連プロパティを指定する必要があります。
  • oracle.kv.security
  • oracle.kv.auth.username
  • oracle.kv.auth.pwdfile.fileまたはoracle.kv.auth.wallet.dir

前述の各プロパティは、HiveがHive TBLPROPERTIESディレクティブで指定された残りのプロパティで識別されるストアと安全に通信するために、Oracle NoSQL Databaseが必要とするアーティファクトのいずれかに対応しています。

追加の各セキュリティ関連プロパティの機能の詳細は、付録「セキュア・クライアントのビルドおよびパッケージ化のためのモデル」を参照してください。

前述の相違点以外は、次の各項に示されているHiveコマンドに関して、非セキュア・シナリオとセキュア・シナリオは他のすべての点で同じです。