2014年12月2日火曜日

groovyとApache Phoenixでバッチupsertを実行する

groovyとApache Phoenixでテーブルを削除するには、以下のようなコードを実行します。

サンプルコード
import groovy.sql.Sql
import java.sql.*

sql = Sql.newInstance(
  "jdbc:phoenix:localhost",
  "",
  "",
  "org.apache.phoenix.jdbc.PhoenixDriver")

stmt_create = """
CREATE TABLE SALES_DATA
(
  SALES_DATE DATE NOT NULL,
  CUSTOMER_CD CHAR(6) NOT NULL,
  STORE_ID INTEGER NOT NULL,
  ITEM_ID BIGINT NOT NULL,
  SALES BIGINT,
  UNITS_SOLD BIGINT,
  CONSTRAINT PK_SALES_FACT
    PRIMARY KEY (SALES_DATE, CUSTOMER_CD, STORE_ID, ITEM_ID)
)
"""
sql.execute(stmt_create)

stmt_ins = """
UPSERT INTO SALES_DATA VALUES (?, ?, ?, ?, ?, ?)
"""
sql.withBatch(1000, stmt_ins){ ps ->
  ps.addBatch([new Date(new java.util.Date("2014/08/01").time),
    "000001", 1, 100, 1000, 2])
  ps.addBatch([new Date(new java.util.Date("2014/08/02").time),
    "000002", 1, 102, 2000, 4])
  ps.addBatch([new Date(new java.util.Date("2014/08/03").time),
    "000001", 1, 104, 1000, 4])
  ps.addBatch([new Date(new java.util.Date("2014/08/04").time),
    "000002", 1, 100, 3000, 6])
}
sql.commit()

query = """
select * from SALES_DATA
"""
sql.eachRow(query){ row ->
  println row
}
クライアント設定
phoenix-4.1.0-bin.tar.gzを解凍しphoenix-4.1.0-bin/hadoop2/phoenix-4.1.0-client-hadoop2.jarを~/.groovy/libなどにコピーします。

動作環境
groovy 2.3.6, JDK 7 Update 65, Hadoop 2.5.0, zookeeper 3.4.6, hbase 0.98.5, phoenix 4.1.0

0 件のコメント:

コメントを投稿