最新のコンテンツが反映されていません。早急にアップデート内容をご提供できるよう努めております。最新のコンテンツ内容は韓国語ページをご参照ください。
VPC環境で利用できます。
Hive External Tableは、Hiveでテーブルの作成時に Externalキーワードで作成するテーブルです。Hive External Tableは、hive.metastore.warehouse.dir プロパティが示すディレクトリにデータを保存せず、テーブルの作成時に設定したパスにデータを保存します。
既に Hadoopにあるデータに基づいてテーブルを作成するため、スキーマを設定するだけで作成できます。
参考
Hive を使用するガイドでも Hive External Table関連のユースケースを確認できます。
このガイドでは、jsonデータを Cloud Hadoopで提供する Hiveの External Tableと連携して使用する方法について説明します。
サンプルデータの準備
サンプルデータを準備する方法は、次の通りです。
- hiveユーザーに切り替えます。
$ sudo su - hive
- 当該データをダウンロードします。
参考
当該データは、ndjson(Newline Delimited JSON)データ形式です。
HDFSに jsonファイルをアップロード
HDFSに jsonファイルをアップロードする方法は、次の通りです。
- HDFSにディレクトリを作成します。
$ hdfs dfs -mkdir /user/hive/bookstat
- HDFSに jsonファイルをアップロードします。
$ hdfs dfs -put bookstat.json /user/hive/bookstat
- 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を作成する方法は、次の通りです。
-
Cloud Hadoopクラスタエッジノードに SSHでアクセスします。
- クラスタノードに SSHでアクセスする方法に関する詳細は、SSHでクラスタノードにアクセスガイドをご参照ください。
-
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を削除する方法は、次の通りです。
- 作成された Hive External Tableの次のコマンドを用いて削除します。
- 以下は、先ほど作成した Hive External Table(bookstat_serde1)を削除する例です。
DROP TABLE bookstat_serde1;
- 削除されたテーブルに対して 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;