Apache Phoenix では、標準の JDBC API を使用して HBase に SQL クエリを実行できます。ネイティブの HBase クライアントコードは必要ありません。
前提条件
開始する前に、次を満たしていることを確認してください:
Phoenix のランタイム環境が用意されていること。用意できていない場合は、環境を準備するをご参照ください。
クイックスタート
次の手順では、Phoenix SQL シェルを使用してテーブルを作成し、データを挿入し、クエリを実行します。代わりに Java アプリケーションから接続する場合は、Phoenix JDBC API をご参照ください。
-
us_populationテーブルを作成します。CREATE TABLE IF NOT EXISTS us_population ( state CHAR(2) NOT NULL, city VARCHAR NOT NULL, population BIGINT CONSTRAINT my_pk PRIMARY KEY (state, city)); -
UPSERT INTOを使用してデータをアップサートします。UPSERT INTO us_population VALUES('NY','New York',8143197); UPSERT INTO us_population VALUES('CA','Los Angeles',3844829); UPSERT INTO us_population VALUES('IL','Chicago',2842518); UPSERT INTO us_population VALUES('TX','Houston',2016582); UPSERT INTO us_population VALUES('PA','Philadelphia',1463281); UPSERT INTO us_population VALUES('AZ','Phoenix',1461575); UPSERT INTO us_population VALUES('TX','San Antonio',1256509); UPSERT INTO us_population VALUES('CA','San Diego',1255540); UPSERT INTO us_population VALUES('TX','Dallas',1213825); UPSERT INTO us_population VALUES('CA','San Jose',912332); -
データをクエリします。次の例では、州ごとに人口を集計し、降順で並べ替えます。
SELECT state as "State",count(city) as "City Count",sum(population) as "Population Sum" FROM us_population GROUP BY state ORDER BY sum(population) DESC; -
結果を確認します。想定される出力:
csv columns from database. CSV Upsert complete. 10 rows upserted Time: 0.159 sec(s) St City Count Population Sum -- ---------------------------------------- ---- ----------------------------------------------- NY 1 8143197 CA 3 6012701 TX 3 4486916 IL 1 2842518 PA 1 1463281 AZ 1 1461575 Time: 0.16 sec(s)
Phoenix JDBC API
-
Phoenix 5.x SDK Maven 依存関係:
<dependency> <groupId>com.aliyun.phoenix</groupId> <artifactId>ali-phoenix-queryserver-client</artifactId> <version>5.2.1-HBase-2.x</version> </dependency> -
Phoenix 4.x SDK Maven 依存関係:
<dependency> <groupId>com.aliyun.phoenix</groupId> <artifactId>ali-phoenix-core</artifactId> <version>${最新バージョンについては、よくある質問をご参照ください}</version> </dependency>
関連ドキュメント
コード例については、Examples をご参照ください。