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用のカラムを作るって感じです。
あまり捻りのない感じですが、考え付くまでに時間がかかったので備忘録代わりに・・・