小编Vik*_*ena的帖子

hive查询特定uniontype的记录

我有一个示例的hive表创建为

CREATE TABLE union_test(foo UNIONTYPE<int, double, array<string>, struct<a:int,b:string>>);
Run Code Online (Sandbox Code Playgroud)

数据可以视为

SELECT foo FROM union_test;
Run Code Online (Sandbox Code Playgroud)

输出是

{0:1}
{1:2.0}
{2:["three","four"]}
{3:{"a":5,"b":"five"}}
{2:["six","seven"]}
{3:{"a":8,"b":"eight"}}
{0:9}
{1:10.0}
Run Code Online (Sandbox Code Playgroud)

第一个字段(tag)表示union的类型(0表示int,1表示double,2表示数组等).

我的问题是,如果我发现只选择那些联合类型为2(数组)的记录,我应该如何构建我的查询?

hive unions

5
推荐指数
1
解决办法
1208
查看次数

在 hive 表上设置压缩

我有一个基于 avro 架构的配置单元表。该表是使用以下查询创建的

CREATE EXTERNAL TABLE datatbl PARTITIONED BY (date String, int time) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe' WITH SERDEPROPERTIES ( 'avro.schema.url'='path to schema file on HDFS') STORED as INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat' LOCATION '<path on hdfs>'

到目前为止,我们一直通过设置以下属性向表中插入数据

hive> set hive.exec.compress.output=true; hive> set avro.output.codec=snappy;

但是,如果有人忘记设置上述两个属性,则无法实现压缩。我想知道是否有一种方法可以强制对表本身进行压缩,以便即使未设置上述两个属性,数据也始终会被压缩?

compression hive avro hiveql snappy

5
推荐指数
0
解决办法
8700
查看次数

标签 统计

hive ×2

avro ×1

compression ×1

hiveql ×1

snappy ×1

unions ×1