生涯未熟

生涯未熟

プログラミングをちょこちょこと。

sqoopでhbaseへのimport時に好きな文字列をRowKeyにする

sqoopを使ってhbaseへimportする際にRowKeyを指定するには --hbase-row-key を使いますが、
通常はcolumnを一つ指定するか、カンマ区切りのリストで複数のcolumnを指定する形になります。

しかし、好きな文字列とcolumnの値を結合してをRowKeyにしたい場合はどうすればいいでしょう?

試しに以下のようなテーブルでやってみましょう。
DBはMySQLを想定しています。

テーブル名:user
カラム:
・id
・name

このテーブルからhbaseに以下のような形でimportしてみましょう。

RowKey:id_1_name_taro
CF:
・id
・name

それでは、sqoopでimportしてみます。
接続先の情報は省略しています。

sqoop import \
-- query "SELECT id, name, CONCAT('id_', id, '_name_', name) AS rowkey FROM user WHERE \$CONDITIONS"
--hbase-row-key rowkey

これでRowKeyが id_1_name_taro という形になります。
単純に CONCAT でRowKey用のカラムを作るって感じです。 あまり捻りのない感じですが、考え付くまでに時間がかかったので備忘録代わりに・・・