Hive 计算配置单元表中复合字段的大小

Hive 计算配置单元表中复合字段的大小,hive,archive,Hive,Archive,在我的配置单元表(按日期分区)中,有一个复合(嵌套)字段。我想通过对这个字段的字节表示求和来计算它的大小,然后按日期分组并对字节求和。如何在hive中实现这一点?我知道如何计算复杂对象的字符串表示的大小。也许这将帮助您了解至少如何估计字节大小 使用transform,我们可以获得字符串表示并检查长度。如果需要UTF-8字符长度和UTF-8八位字节数 with data as ( select array(named_struct('key','value', 'key2', 'тест')) a

在我的配置单元表(按日期分区)中,有一个复合(嵌套)字段。我想通过对这个字段的字节表示求和来计算它的大小,然后按日期分组并对字节求和。如何在hive中实现这一点?

我知道如何计算复杂对象的字符串表示的大小。也许这将帮助您了解至少如何估计字节大小

使用transform,我们可以获得字符串表示并检查长度。如果需要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