具有azure blob存储的配置单元外部表

0pizxfdo  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(412)

有没有一种方法可以使用serde创建一个配置单元外部表,该表的位置指向azure存储,其组织方式使数据使用的blob数最少。例如,如果插入10000条记录,我希望它只创建100页的blob,每个blob有100行记录,而不是10000个blob,每个blob有1条记录。我正在从blob中反序列化,因此更少的blob将需要更少的时间。在配置单元中,什么是最理想的格式?

r8uurelv

r8uurelv1#

首先,有一种方法可以使用serde创建一个配置单元外部表,localation指向azureblob存储,但不能直接创建,请参阅下面的部分 Create Hive database and tables 就像下面的Hive。

create database if not exists <database name>;
CREATE EXTERNAL TABLE if not exists <database name>.<table name>
(
    field1 string,
    field2 int,
    field3 float,
    field4 double,
    ...,
    fieldN string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '<field separator>' lines terminated by '<line separator>'
STORED AS TEXTFILE LOCATION '<storage location>' TBLPROPERTIES("skip.header.line.count"="1");

并重点对以下内容进行说明 <storage location> . <storage location> :用于保存配置单元表数据的azure存储位置。如果不指定位置,则默认情况下,数据库和表存储在配置单元集群的默认容器中的hive/warehouse/目录中。如果要指定存储位置,则存储位置必须位于数据库和表的默认容器中。此位置必须被称为相对于集群的默认容器的位置,格式为' wasb:///<directory 1>/ '或' wasb:///<directory 1>/<directory 2>/ '等。执行查询后,将在默认容器中创建相对目录。
因此,这意味着您可以通过访问配置单元上的azure blob存储位置 wasb 协议,要求 hadoop-azure 在azure存储上支持hadoop访问hdfs的库。如果您在hadoop上的配置单元没有部署在azure上,您需要参考hadoop官方文档 Hadoop Azure Support: Azure Blob Storage 来配置它。
对于使用serde,这取决于您使用的文件格式,例如对于orc文件格式,hql代码使用 OrcSerde 就像下面一样。

CREATE EXTERNAL TABLE IF NOT EXSISTS <table name> (<column_name column_type>, ...)
    ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.orc.OrcSerde' 
    STORED AS ORC 
    LOCATION '<orcfile path>'

对于第二种,最理想的格式是 ORC File Format 在Hive里。

相关问题