Hive External Tableに jsonファイルを連携

Prev Next

最新のコンテンツが反映されていません。早急にアップデート内容をご提供できるよう努めております。最新のコンテンツ内容は韓国語ページをご参照ください。

VPC環境で利用できます。

Hive External Tableは、Hiveでテーブルの作成時に Externalキーワードで作成するテーブルです。Hive External Tableは、hive.metastore.warehouse.dir プロパティが示すディレクトリにデータを保存せず、テーブルの作成時に設定したパスにデータを保存します。

既に Hadoopにあるデータに基づいてテーブルを作成するため、スキーマを設定するだけで作成できます。

参考

Hive を使用するガイドでも Hive External Table関連のユースケースを確認できます。

このガイドでは、jsonデータを Cloud Hadoopで提供する Hiveの External Tableと連携して使用する方法について説明します。

サンプルデータの準備

サンプルデータを準備する方法は、次の通りです。

  1. hiveユーザーに切り替えます。
$ sudo su - hive
  1. 当該データをダウンロードします。
参考

当該データは、ndjson(Newline Delimited JSON)データ形式です。

HDFSに jsonファイルをアップロード

HDFSに jsonファイルをアップロードする方法は、次の通りです。

  1. HDFSにディレクトリを作成します。
$ hdfs dfs -mkdir /user/hive/bookstat
  1. HDFSに jsonファイルをアップロードします。
$ hdfs dfs -put bookstat.json /user/hive/bookstat
  1. HDFSファイルリストを確認します。
$ hdfs dfs -ls -R /user/hive/bookstat
-rw-r--r--   2 hive hdfs        193 2023-06-28 14:41 /user/hive/bookstat/bookstat.json

json形式を使う Hive External Tableの作成

Hive External Tableを作成する方法は、次の通りです。

  1. Cloud Hadoopクラスタエッジノードに SSHでアクセスします。

  2. Hiveクライアントコマンドを利用して External Tableを作成します。

    • データベース作成
    hive> create database book;
    
    • 作成したデータベースを使用
    hive> use book;
    
    • テーブル作成
    hive> CREATE EXTERNAL TABLE IF NOT EXISTS bookstat_serde1
    (
        statTime STRING,
        bizCode STRING,
        saleInfo STRUCT <
            bookName:STRING,
            saleCount:INT
        >
    )
    ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'
    STORED AS TEXTFILE
    LOCATION '/user/hive/bookstat' ;
    

json形式を使う Hive External Tableの照会

  • テーブルが作成されると、SELECTクエリを実行してデータを確認できます。
  • テーブル照会
hive> select * from bookstat_serde1;
OK
20130710180059  BOOK    {"bookname":"book61","salecount":749}
20230628140059  BOOK    {"bookname":"book800","salecount":899}

Hive External Table削除

Hive External Tableを削除する方法は、次の通りです。

  1. 作成された Hive External Tableの次のコマンドを用いて削除します。
    • 以下は、先ほど作成した Hive External Table(bookstat_serde1)を削除する例です。
DROP TABLE bookstat_serde1;
  1. 削除されたテーブルに対して SELECTクエリを実行します。エラーは発生しますが、正常にテーブルが削除されたことが確認できます。また、Show Tablesでテーブルの削除有無を確認できます。
  • SELECTクエリを利用
SELECT * FROM bookstat_serde1;

Error: Error while compiling statement: FAILED: SemanticException [Error 10001]: Line 1:14 Table not found 'bookstat_serde1' (state=42S02,code=10001)
  • SHOW TABLESでテーブルリストを確認
SHOW TABLES;