セキュア・ストアでのOracle NoSQL Database表へのHive表のマッピング

付録「セキュア・ストアのデプロイ」に説明されている方法でOracle NoSQL Databaseセキュア・ストアをデプロイした場合は、Hiveクライアントとして使用できるBig Data SQLシステムのいずれかのノードにログインします。次に、Hiveコマンドライン・インタフェースから次のコマンドを実行して、パスワード・ファイルを使用してセキュアなOracle NoSQL DatabasevehicleTableにHive外部表をマップします。

CREATE EXTERNAL TABLE IF NOT EXISTS vehicleTablePasswd
    (type STRING, make STRING, model STRING, class STRING, color STRING, 
        price DOUBLE, count INT, dealerid DECIMAL, delivered TIMESTAMP) 
    STORED BY 'oracle.kv.hadoop.hive.table.TableStorageHandler'
    TBLPROPERTIES (
        "oracle.kv.kvstore" = "example-store", 
        "oracle.kv.hosts"= "kv-host-1:5000,kv-host-2:5000,kv-host-3:5000", 
        "oracle.kv.tableName" = "vehicleTable",
        "oracle.kv.hadoop.hosts" = "dn-host-1,dn-host-2,dn-host-3",
        "oracle.kv.security" = "/tmp/hive-nosql.login",
        "oracle.kv.ssl.truststore" = "/tmp/client.trust",
        "oracle.kv.auth.username" = "example-user", 
        "oracle.kv.auth.pwdfile.file" = "/tmp/example-user.passwd");

また、Oracle Walletを使用してセキュアなOracle NoSQL Database内の同じvehicleTableにHive外部表をマップするには、次のHiveコマンドを実行します。

CREATE EXTERNAL TABLE IF NOT EXISTS vehicleTableWallet
    (type STRING, make STRING, model STRING, class STRING, color STRING, 
        price DOUBLE, count INT, dealerid DECIMAL, delivered TIMESTAMP) 
    STORED BY 'oracle.kv.hadoop.hive.table.TableStorageHandler'
    TBLPROPERTIES (
        "oracle.kv.kvstore" = "example-store", 
        "oracle.kv.hosts"= "kv-host-1:5000,kv-host-2:5000,kv-host-3:5000", 
        "oracle.kv.tableName" = "vehicleTable",
        "oracle.kv.hadoop.hosts" = "dn-host-1,dn-host-2,dn-host-3",
        "oracle.kv.security" = "/tmp/hive-nosql.login",
        "oracle.kv.ssl.truststore" = "/tmp/client.trust",
        "oracle.kv.auth.username" = "example-user", 
        "oracle.kv.auth.wallet.dir" = "/tmp/example-user-wallet.dir");

同様に、パスワード・ファイルを使用して、付録「rmvTableの作成および移入」で説明されているrmvTableにHive外部表をマップするには、次のコマンドを実行します。

CREATE EXTERNAL TABLE IF NOT EXISTS rmvTablePasswd
    (zipcode STRING, lastname STRING, firstname STRING, ssn BIGINT, 
        gender STRING, license BINARY, phoneinfo MAP<STRING, STRING>,
        address STRUCT<number:INT street:STRING, 
        unit:INT, city:STRING, zip:INT>,
        vehicleinfo ARRAY<STRUCT<type:STRING, make:STRING,
            model:STRING, class:STRING, color:STRING,
            value:FLOAT, tax:DOUBLE, paid:BOOLEAN>>)
    COMMENT 'Hive mapped to NoSQL table: rmvTable'
    STORED BY 'oracle.kv.hadoop.hive.table.TableStorageHandler'
    TBLPROPERTIES (
        "oracle.kv.kvstore" = "example-store", 
        "oracle.kv.hosts"= "kv-host-1:5000,kv-host-2:5000,kv-host-3:5000", 
        "oracle.kv.tableName" = "rmvTable",
        "oracle.kv.hadoop.hosts" = "dn-host-1,dn-host-2,dn-host-3",
        "oracle.kv.security" = "/tmp/hive-nosql.login",
        "oracle.kv.ssl.truststore" = "/tmp/client.trust",
        "oracle.kv.auth.username" = "example-user", 
        "oracle.kv.auth.pwdfile.file" = "/tmp/example-user.passwd");

また、Oracle Walletを使用してセキュアなOracle NoSQL Database内の同じrmvTableにHive外部表をマップするには、次のコマンドを実行します。

CREATE EXTERNAL TABLE IF NOT EXISTS rmvTableWallet
    (zipcode STRING, lastname STRING, firstname STRING, ssn BIGINT, 
        gender STRING, license BINARY, phoneinfo MAP<STRING, STRING>,
        address STRUCT<number:INT street:STRING, 
            unit:INT, city:STRING, zip:INT>,
        vehicleinfo ARRAY<STRUCT<type:STRING, make:STRING,
            model:STRING, class:STRING, color:STRING,
            value:FLOAT, tax:DOUBLE, paid:BOOLEAN>>)
    COMMENT 'Hive mapped to NoSQL table: rmvTable'
    STORED BY 'oracle.kv.hadoop.hive.table.TableStorageHandler'
    TBLPROPERTIES (
        "oracle.kv.kvstore" = "example-store", 
        "oracle.kv.hosts"= "kv-host-1:5000,kv-host-2:5000,kv-host-3:5000", 
        "oracle.kv.tableName" = "rmvTable",
        "oracle.kv.hadoop.hosts" = "dn-host-1,dn-host-2,dn-host-3",
        "oracle.kv.security" = "/tmp/hive-nosql.login",
        "oracle.kv.ssl.truststore" = "/tmp/client.trust",
        "oracle.kv.auth.username" = "example-user", 
        "oracle.kv.auth.wallet.dir" = "/tmp/example-user-wallet.dir");

最後に、パスワード・ファイルを使用して、付録「exampleJsonTableの作成および移入」で説明されているexampleJsonTableにHive外部表をマップするには、次のコマンドを実行します。

CREATE EXTERNAL TABLE IF NOT EXISTS exampleTablePasswd
    (id INTEGER, jsonfield STRING)
    COMMENT 'Hive mapped to NoSQL table: exampleJsonTable'
    STORED BY 'oracle.kv.hadoop.hive.table.TableStorageHandler'
    TBLPROPERTIES (
        "oracle.kv.kvstore" = "example-store", 
        "oracle.kv.hosts"= "kv-host-1:5000,kv-host-2:5000,kv-host-3:5000", 
        "oracle.kv.tableName" = "exampleJsonTable", 
        "oracle.kv.hadoop.hosts" = "dn-host-1,dn-host-2,dn-host-3",
        "oracle.kv.security" = "/tmp/hive-nosql.login",
        "oracle.kv.ssl.truststore" = "/tmp/client.trust",
        "oracle.kv.auth.username" = "example-user",
        "oracle.kv.auth.pwdfile.file" = "/tmp/example-user.passwd");

また、Oracle Walletを使用してセキュアなOracle NoSQL Database内の同じexampleJsonTableにHive外部表をマップするには、次のコマンドを実行します。

CREATE EXTERNAL TABLE IF NOT EXISTS exampleJsonTableWallet
    (int INTEGER, jsonfield STRING)
    COMMENT 'Hive mapped to NoSQL table: exampleJsonTable'
    STORED BY 'oracle.kv.hadoop.hive.table.TableStorageHandler'
    TBLPROPERTIES (
        "oracle.kv.kvstore" = "example-store", 
        "oracle.kv.hosts"= "kv-host-1:5000,kv-host-2:5000,kv-host-3:5000", 
        "oracle.kv.tableName" = "exampleJsonTable", 
        "oracle.kv.hadoop.hosts" = "dn-host-1,dn-host-2,dn-host-3",
        "oracle.kv.security" = "/tmp/hive-nosql.login",
        "oracle.kv.ssl.truststore" = "/tmp/client.trust",
        "oracle.kv.auth.username" = "example-user",
        "oracle.kv.auth.wallet.dir" = "/tmp/example-user-wallet.dir");

Oracle NoSQL Databaseセキュア・ストア内の表の名前はvehicleTablermvTableおよびexampleJsonTableですが、Hiveで作成される表の名前は、対応するOracle NoSQL Database表の名前と一致する必要はありません。これにより、同じOracle NoSQL Database表にマップされた異なるHive表を作成でき、異なるセキュリティ・メカニズムを使用したOracle NoSQL Database表の問合せが可能になります。