Как заставить Hive сериализовать типы структур в двоичном формате в таблицах Hive-HBase? - PullRequest
0 голосов
/ 27 декабря 2018

В таблицах Hive на основе HBase я не получаю сериализованные типы структур в двоичном формате.Рассмотрим следующий пример.

Сначала я создаю таблицу и вставляю строку.

CREATE TABLE `hbase_test_1`(
  `key` struct<a:int, b:int>,
  `int_val` int,
  `double_val` double,
  `complex` struct<a:int, b:string, c:double>)
ROW FORMAT SERDE
  'org.apache.hadoop.hive.hbase.HBaseSerDe'
STORED BY
  'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES (
  'hbase.columns.mapping'=':key#b,f:d,f:i,f:c#b',
  'hbase.table.default.storage.type'='binary',
  'serialization.format'='1')
TBLPROPERTIES (
  'hbase.table.name' = 'hbase_test_1');

insert into hbase_test_1
select * from
(select named_struct('a', 1234, 'b', 5), 89102, 107., named_struct('a', 12, 'b', 'foo', 'c', 3.4)) t;

Сканирование в оболочке hbase дает:

scan 'hbase_test_1'

ROW                                                          COLUMN+CELL
 1234\x025                                                   column=f:c, timestamp=1545906554580, value=12\x02foo\x023.4
 1234\x025                                                   column=f:d, timestamp=1545906554580, value=\x00\x01\x5C\x0E
 1234\x025                                                   column=f:i, timestamp=1545906554580, value=@Z\xC0\x00\x00\x00\x00\x00

Обе структуры (ключ строки и другой) не сериализуются в двоичном формате.Как я могу изменить это поведение?

...