連載
» 2017年03月28日 05時00分 公開

SQLライクにMapReduce処理ができる「Hive」の使い方きょうから試せる Hadoop“スモールスタート”ガイド(終)(2/3 ページ)

[佐々木達也,著]

テーブル操作

 テーブルの作成も簡単に行えます。

テーブルの作成

 テーブルの情報を見るときには「DESC(DESCRIBE)」コマンドを使います。

テーブルの情報を見る

 「FORMATTED」を指定すれば、より詳細な情報を見ることもできます。

FORMATTEDで詳細な情報を表示

 また、テーブル作成時に「LIKE」を利用すれば、既存のテーブルと同じスキーマを持ったテーブルを簡単に作成することも可能です。以下で、booksテーブルと同じスキーマを持つnovelsテーブルを作成してみます。

LIKEを利用して、既存のテーブルと同じスキーマのテーブルを作成

内部テーブルを扱う

 では、今回作ったbooksテーブルにデータを挿入してみます。HiveはHDFS上に構築されているのでまずはデータをHDFS上に配置します。マスタノード上で以下のようにして作業してください。

books.txt
面白い本,1000
かなり面白い本,1500
すごく面白い本,1800

 これでHDFS上にデータファイルが配置されました。確認してみましょう。

配置されたデータファイルを確認

 これで準備は整いました。再びHiveのインタラクティブシェルで作業します。まずbooksテーブルを定義してそこにデータを追加してみます。ただし、すでに同名のテーブルが存在しているとうまくいきません。まずは存在しているもともとのbooksテーブルを削除しておきます。

もともとのbooksテーブルを削除

 これでbooksテーブルは削除されました。あらためてbooksテーブルを定義しますが、データを挿入するために、区切り文字などを適切に定義してあげる必要があります。FIELDS TERMINATED BYで適切な区切り文字を指定してください。この例ではカンマ区切りのため、カンマを指定してあります。

FIELDS TERMINATED BYで適切な区切り文字を指定

 booksテーブルが作成できたら、ここにデータを挿入しましょう。「INPATH」にはファイルのフルパスではなく、ファイルが存在するディレクトリを指定するので注意してください。指定したパス以下のファイルがすべて読み込まれます。

 なお、OVERWRITEというキーワードが付いていますが、これを付けるとテーブルにある既存のデータをすべて上書きします。OVERWRITEが付いていなければデータは追記されます。

booksテーブルにデータを挿入

 このとき、INPATHで指定したディレクトリの中にタブ区切りではないデータなど、booksテーブルの定義に合わないデータファイルやディレクトリ等が存在するとエラーメッセージが表示されます。

定義に合わないデータファイル等が存在すると表示されるエラーメッセージ

 エラーが出なければこれでbooks.txtのデータがbooksテーブルの中に取り込まれました。実際にbooksテーブルからデータを読み出せることも確認できます。

booksテーブルからデータを読み出せるか確認

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。