gpt4 book ai didi

sql-server - 如何在 HBase 中查看 3 版本的数据

转载 作者:可可西里 更新时间:2023-11-01 15:10:13 25 4
gpt4 key购买 nike

我有一个包含 6 列的 SQL 表,“row_id”,“customer_id”,“f_name”,“l_name”,“location”,“last_update_date”。

1)我已经通过SQOOP为上面的SQL表创建了一个HBase表,下面是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

在上面的 sqooping 中,我通过连接 2 列创建了一个 hbase 行键,它工作正常,到目前为止一切顺利。下面是 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) 当我“描述 hbase_tbl”时,我发现“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}

它恰好运行成功,现在“describe”命令为 VERSION 显示的更改值是 2。

3) 现在为 HBase 行 ID 111_emp1 保留 2 个版本的 f_name 和 l_name,我更新了 row_id 111 的 SQL Server 表两次,并重新读取它,但我只能看到更新后的值,我没有看到它们的当前和过去版本,下面是“get”输出”

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 个“get”输出,在第一个“get”中,f_name 的值为“dev”,而对于第二个“get”,值为“raj”。但我希望看到“dev”和“raj”作为我的输出。因为按照我的“改变”命令,HBase 应该将它们放在一起,但它没有发生。

我错过了什么?

最佳答案

它是 VERSIONS => 2。获得多个版本的正确语法是

get 'xxx', '111_emp1',{COLUMN=> 'amitesh:f_name',VERSIONS=>2}

关于sql-server - 如何在 HBase 中查看 3 版本的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44525613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com