Невозможно эффективно сопоставить ключ строки HBase в таблице HIve

У меня есть таблица HBase, где клавиша строки выглядит так.

08:516485815:2013 1
06:260070837:2014 1
00:338289200:2014 1

Я создаю таблицу ссылок Hive, используя запрос ниже.

create external table hb
(key string,value string)
stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
with serdeproperties("hbase.columns.mapping"=":key,e:-1")
tblproperties("hbase.table.name"="hbaseTable");

Когда я запрашиваю таблицу, я получаю следующий результат

select * from hb;

08:516485815 1
06:260070837 1
00:338289200 1

Мне это очень странно. Почему serde не может отобразить все содержимое ключа HBase? В таблице улья отсутствует все после второго ":"

Кто-нибудь сталкивался с подобной проблемой?


person Alex Raj Kaliamoorthy    schedule 26.02.2018    source источник


Ответы (1)


Я попытался воссоздать ваш сценарий на Hbase 1.1.2 и Hive 1.2.1000, он работает, как ожидалось, и я могу получить весь rowkey из улья.

hbase>   create 'hbaseTable','e'
hbase>   put 'hbaseTable','08:516485815:2013','e:-1','1'
hbase>   scan 'hbaseTable'
    ROW                                                         COLUMN+CELL
     08:516485815:2013                                          column=e:-1, timestamp=1519675029451, value=1
    1 row(s) in 0.0160 seconds

Поскольку у меня есть 08: 516485815: 2013 как rowkey, и я создал таблицу улья

 hive> create external table hb
    (key string,value string)
    stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
    with serdeproperties("hbase.columns.mapping"=":key,e:-1")
    tblproperties("hbase.table.name"="hbaseTable");
 hive> select * from hb;
    +--------------------+-----------+--+
    |       hb.key       | hb.value  |
    +--------------------+-----------+--+
    | 08:516485815:2013  | 1         |
    +--------------------+-----------+--+

Можете ли вы однажды убедиться, что ваш ключ строки таблицы hbase содержит данные после секунды:.

person Shu    schedule 26.02.2018
comment
У Hbase есть ключ, как я уже упоминал. - person Alex Raj Kaliamoorthy; 27.02.2018
comment
Если я буду следовать тому же шагу создания таблицы hbase и таблицы улья, как и вы, я получу тот же результат, что и ваш. Но таблица HBase, которую я использую, имеет значения как json. Не знаю, имеет ли это значение. Также клавиши строк представляют собой комбинацию обоих типов, то есть 08:516485815:2013 и 08:516485815. - person Alex Raj Kaliamoorthy; 27.02.2018
comment
Не могли бы вы поделиться некоторыми образцами строк hbase..scan ‘table-name’, {LIMIT = ›10} - person Shu; 27.02.2018