Hive External Tableに jsonファイルを連携
- 印刷する
- PDF
Hive External Tableに jsonファイルを連携
- 印刷する
- PDF
Article Summary
Share feedback
Thanks for sharing your feedback!
Classic環境で利用できます。
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;
この記事は役に立ちましたか?