Рассчитать размер составного поля в таблице улья - PullRequest
0 голосов
/ 05 октября 2019

В моих таблицах кустов (разделенных по дате) есть составное (вложенное) поле. Я хочу вычислить его размер, суммируя байтовое представление этого поля, затем группируя по дате и суммируя байты. Как мне достичь этого в улье?

1 Ответ

0 голосов
/ 05 октября 2019

Я знаю, как рассчитать размер строкового представления сложного объекта. Возможно, это поможет вам хотя бы понять, как оценивать размер в байтах.

Используя преобразование, мы можем получить строковое представление и проверить длину. Hive 2.3 имеет char_length и octet_length , если вам нужна длина символа UTF-8 и количество октетов UTF-8.

with data as (
select array(named_struct('key','value', 'key2', 'тест')) as complex_object
)

select complex_object_str, length(complex_object_str) ascii_length, length(cast(complex_object_str as binary)) binary_length
from 
(
select transform(complex_object) using  '/bin/cat' as complex_object_str from data
)s;

Результат:

complex_object_str  ascii_length    binary_length   
[{"key":"value","key2":"тест"}] 31  35  
...