- 印刷する
- PDF
Hive を使用する
- 印刷する
- PDF
Classic環境で利用できます。
このガイドでは、Object Storageバケットにデータを保存した後、Hueと Beelineを用いて簡単な Hiveクエリを実行する方法について説明します。
アーキテクチャの例
引き続き保存する必要のあるデータは Object Storageバケットに保存し、Cloud Hadoopクラスタは必要なときにだけ使用します。
Hiveクエリを実行すると、次のステップ通りにクエリが実行されます。
- Hiveクライアントから Cloud Hadoopクラスタにある Hiveサーバにクエリを提出
- サーバはクエリを処理し、マスターサーバにインストールされたメタデータ DB(MySQL)にメタデータをリクエスト
- サーバは Object Storageのバケットに保存されているデータをロード
- Hiveサーバはクライアントに結果を返す
Hiveテーブル作成
例) NAVERクラウドプラットフォームの Object Storageバケットにサンプルデータファイルをアップロードし、Hiveでこのデータを使用できるように Hive External Tableを作成
Object Storageバケットにあるデータを使用するには、hive-site.xml
に以下のような構成が必要です。
fs.s3a.access.key=<API-ACCESS-KEY>
fs.s3a.connection.ssl.enabled=false
fs.s3a.endpoint=http://kr.objectstorage.ncloud.com
fs.s3a.impl=org.apache.hadoop.fs.s3a.S3AFileSystem
fs.s3a.secret.key=<API-SECRET-KEY>
Hiveテーブルを作成する方法は、次の通りです。
サンプルデータをダウンロードして圧縮を展開し、
AllstarFull.csv
ファイルを Object Storageバケットにアップロードします。- Hiveでは、データファイルの locationをフォルダ単位で読み込むため、1つのフォルダにつき1つのデータを保存します。(推奨)。
参考提供されるサンプルデータは Lahman's Baseball Database 2012バージョンの一部であり、データのすべての著作権は Sean Lahmanにあります。
Ambari Hive View2.0 または Hue Hiveエディタ で、下記の構文で Hive External Tableを作成します。
location
: データセットファイルが保存されたバケットパスを指定
DROP table allstarfull;
CREATE external TABLE if not EXISTS `allstarfull` (
`playerID` VARCHAR(20),
`yearID` INT,
`gameNum` INT,
`gameID` VARCHAR(30),
`teamID` VARCHAR(4),
`lgID` VARCHAR(4),
`GP` INT,
`startingPos` INT
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
location 's3a://deepdrive-hue/input/lahman2012/allstarfull';
Hiveクエリの実行
Cloud Hadoopが提供する様々なツールを用いて Hiveクエリを実行できます。このガイドでは、以下の<Hiveクエリ実行ツールの例>でクエリを実行する方法について説明します。
- <Hiveクエリ実行ツールの例>
- Hueの Hiveインタプリタ
- Hiveクライアントのうち、SQLLine CLIをベースにした Beeline
Hueの Hiveインタプリタ
Hueの Hiveインタプリタを用いて Hiveクエリを実行する方法は、次の通りです。
Hueにログインし、Hiveインタプリタで HiveQLクエリを実行します。
SELECT * FROM allstarfull LIMIT 10;
結果画面を通じて s3にアップロードしたファイルが Hiveテーブルと連携されたか確認します。
Beeline
Beelineを用いて Hiveクエリを実行する方法は、次の通りです。
Hiveクライアントがインストールされたホストに直接アクセスし、以下のコマンドで Beelineセッションを開始します。
- [HIVE-SERVER2-SERVER] にはマスターノード(m-00x)アドレスを入力します。
beeline -u "jdbc:hive2://[HIVE-SERVER2-SERVER]:10000" -n hive
参考ホストへのアクセス方法は、SSHでクラスタノードにアクセスガイドをご参照ください。
Beelineプロンプトが表示されたら、HiveQLクエリを実行します。
- 以下のクエリは結果を出力せず、Object Storageに保存します。
beeline> INSERT OVERWRITE DIRECTORY 's3a://deepdrive-hue/output/' ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' SELECT playerid, sum(gp) from allstarfull group by playerid;
参考クエリを保存する前に、Object Storageバケットに指定した場所(ディレクトリ)が存在するか確認します。
以下のコマンドを実行して結果が正常に保存されたか確認します。
hadoop fs -cat s3a://deepdrive-hue/output/000000_0
結果は次の通りです。
aaronha01,24 aasedo01,1 abreubo01,2 adamsac01,0 adcocjo01,2 ageeto01,2 aguilri01,3 aguirha01,1 alexado01,0 alfoned01,1 allendi01,6 allenjo02,1 alleyge01,1 allisbo01,2 alomaro01,12 ...
Hueの LLAPを有効化
Hueのエディタリストで LLAPを有効にする方法は、次の通りです。
Cloud Hadoopコンソールで作成したクラスタを選択した後、 [Application別に見る] を通じて Ambari Web UIにアクセスできます。詳細は、Ambaru UIガイドをご参照ください。
- Ambariに接続し、 [Hive] > [CONFIGS] > [SETTINGS] で Hive LLAPを有効にします。設定を追加した後、 [SAVE] ボタンを押して保存し、 [RESTART] ボタンを押して再起動します。
- [Hue] > [CONFIGS] > [Hue Service Module] で Hue Hive LLAP Moduleを有効にします。設定を追加した後、[SAVE] ボタンを押して保存し、[RESTART] ボタンを押して再起動します。
- Hueのエディタリストで LLAPエディタが有効になっていることが確認できます。