2017-06-13 1 views
1

"row_id"、 "customer_id"、 "f_name"、 "l_name"、 "location"、 "last_update_date"の6つのカラムを持つSQLテーブルがあります。HBaseで3バージョンのデータを見る方法

1)Iは、上記のSQLテーブルのSQOOP介しHBaseのテーブルを作成して、以下上記sqoopingでsqoop構文

sqoop import --connect "jdbc:sqlserver://server:port;databaseName=db" --username xxx --password xxx --table xxx --hbase-table xxx --column-family amitesh --hbase-row-key row_id,customer_id --hbase-create-table -m 1 

あり、Iは2列を連結してHBaseの行のキーを作成し、ましたその作業の罰金、これまでのところ良い。以下は、私が "hbase_tblを記述する" HBaseの "スキャン" を出力

hbase(main):036:0> scan 'xxx' 
ROW           COLUMN+CELL 
111_emp1         column=amitesh:f_name, timestamp=1497365606380, value=dev 
111_emp1         column=amitesh:l_name, timestamp=1497365606380, value=saha 
111_emp1         column=amitesh:last_update_date, timestamp=1497365606380, value=2017-06-12 
111_emp1         column=amitesh:location, timestamp=1497365606380, value=hyd 
112_emp1         column=amitesh:f_name, timestamp=1497365606380, value=hari 
112_emp1         column=amitesh:l_name, timestamp=1497365606380, value=sri 
112_emp1         column=amitesh:last_update_date, timestamp=1497365606380, value=2017-06-13 
112_emp1         column=amitesh:location, timestamp=1497365606380, value=bng 

2)ですが、私は "VERSIONS => 1"、の値はあなたは下の見ることができるようにことがわかった:

hbase(main):025:0> describe 'xxx' 
Table HBASE_SQOOP is ENABLED 
HBASE_SQOOP 
COLUMN FAMILIES DESCRIPTION 
{NAME => 'amitesh', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION 
=> 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'} 

そこで、バージョンを2に変更するために、HBaseのコマンドを実行しました。

正常に実行するために起こる
alter 'xxx', {NAME => 'amitesh', VERSIONS => 2} 

、および変更された今F_NAMEの2バージョンを維持するために今すぐ)VERSIONためのコマンドが2

3だった「記述」で表示される値、およびHBaseの行のL_NAME id 111_emp1、row_id 111のSQL Serverテーブルを2回更新して再sqoopしましたが、更新された値しか表示されませんでした。現在のバージョンと過去のバージョンは表示されません。

hbase(main):038:0> get 'xxx', '111_emp1',{COLUMN=> 'amitesh:f_name',VERSION=>2} 
COLUMN          CELL 
amitesh:f_name        timestamp=1497365606380, value=dev 
1 row(s) in 0.0040 seconds 


hbase(main):047:0> get 'xx', '111_emp1',{COLUMN=> 'amitesh:f_name',VERSION=>2} 
COLUMN          CELL 
amitesh:f_name        timestamp=1497365863181, value=Raj 
1 row(s) in 0.0110 seconds 

あなたは、「取得」最初に、出力を「取得」2上に見ることができるようにf_nameの値は「dev」、2番目の「get」の値は「raj」です。しかし私は "dev"と "raj"を私の出力として見ることを期待していました。私の "変更"コマンドによると、HBaseはそれらの両方を一緒に保持する必要がありますが、起こることはありません。

私には何が欠けていますか?

答えて

2

VERSIONS => 2です。複数のバージョンを取得する正しい構文は、

get 'xxx', '111_emp1',{COLUMN=> 'amitesh:f_name',VERSIONS=>2} 
です。
関連する問題