Apache Phoenixを使用したApache HBaseのSQLでのクエリ

Published on 14 August 2019 in Querying / Browsing / Version 4 / Version 4.8 - 2 minutes read - Last modified on 12 June 2020

Apache Phoenix は、非リレーショナル分散データストアである Apache HBase拡張する素晴らしいアドオンです。HBase Browser上で、Hue の Editor はデータをクエリするためのより一般的な構文を提供します。キー/バリューストアであることでSQLにはさまざまな構文があり、Hue のSQL UXの機能を完全にサポートするにはまだいくつかの洗練作業が必要なことにご注意ください。

この Phoenix についてのブログ記事では、Phoenix's 15-minute tutorial のチュートリアルに従い、その後 Editor から US_POPULATION テーブルをクエリします。

Hue は SQL Connector documentationに記載されている SqlAlchemy インターフェイスを介して Phoenix をサポートしています。HUE-9367 により、コネクターは Hue に同梱されているのですぐにご利用いただけます。

Hue のホストにて:

./build/env/bin/pip install pyPhoenix

続いて desktop/conf/hue.ini 設定ファイルセクションで Phoenix インタープリターを追加するだけです:

[notebook]
[[interpreters]]
[[[phoenix]]]
name=phoenix
interface=sqlalchemy
options='{"url": "phoenix://sql-phoenix.gethue.com:8765/"}'

その後 queryserver を開始します:

>phoenix-queryserver
...
19/07/24 20:55:13 INFO util.log: Logging initialized @1563ms
19/07/24 20:55:13 INFO server.Server: jetty-9.2.z-SNAPSHOT
19/07/24 20:55:14 INFO server.ServerConnector: Started [email protected]{HTTP/1.1}{0.0.0.0:8765}
19/07/24 20:55:14 INFO server.Server: Started @1793ms
19/07/24 20:55:14 INFO server.HttpServer: Service listening on port 8765.

これで HBase をクエリする準備ができました!

SELECT * FROM us_population LIMIT 10

1 既存の HBase のテーブルをビューにマップする必要があります

0: jdbc:phoenix:> CREATE VIEW if not exists "analytics_demo_view" ( pk VARCHAR PRIMARY KEY, "hours"."01-Total" VARCHAR );
Error: ERROR 505 (42000): Table is read only. (state=42000,code=505)
-->
0: jdbc:phoenix:> CREATE Table if not exists "analytics_demo" ( pk VARCHAR PRIMARY KEY, "hours"."01-Total" VARCHAR );

2 テーブルは Phoenix では大文字で見えます。始めるには Phoenix でテーブルを作成する方がシンプルです。

Error: ERROR 1012 (42M03): Table undefined. tableName=ANALYTICS_DEMO (state=42M03,code=1012)
-->
0: jdbc:phoenix:> select * from "analytics_demo" where pk = "domain.0" limit 5;

3 Phoenix は Apache Calcite に従っています。SQL autocomplete で改善にご協力ください。

4 UI (およびベースとなる SQLAlchemy API) は ‘ANY 名前空間’ と ‘empty/Default’ 名前空間を区別することができません。

このCloudera の Phoenix in CDH のブログ記事で Apache Phoenix の機能の詳細をご覧ください。

フィードバックや質問があれば、この記事または @gethueまでコメントをお願いします!

comments powered by Disqus

More recent stories

31 December 2020
Hue と Spark SQL Server を介したSpark SQL Editor
Read More
17 November 2020
HBaseのようなビッグテーブルにあるライブのKafkaデータをSQLで簡単にクエリする
Read More
20 October 2020
Flink SQL を使用したデータのライブストリームのクエリに関するチュートリアル
Read More