有没有一种方法可以使用serde创建一个配置单元外部表,该表的位置指向azure存储,其组织方式使数据使用的blob数最少。例如,如果插入10000条记录,我希望它只创建100页的blob,每个blob有100行记录,而不是10000个blob,每个blob有1条记录。我正在从blob中反序列化,因此更少的blob将需要更少的时间。在配置单元中,什么是最理想的格式?
r8uurelv1#
首先,有一种方法可以使用serde创建一个配置单元外部表,localation指向azureblob存储,但不能直接创建,请参阅下面的部分 Create Hive database and tables 就像下面的Hive。
Create Hive database and tables
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 就像下面一样。
<storage location>
wasb:///<directory 1>/
wasb:///<directory 1>/<directory 2>/
wasb
hadoop-azure
Hadoop Azure Support: Azure Blob Storage
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里。
ORC File Format
1条答案
按热度按时间r8uurelv1#
首先,有一种方法可以使用serde创建一个配置单元外部表,localation指向azureblob存储,但不能直接创建,请参阅下面的部分
Create Hive database and tables
就像下面的Hive。并重点对以下内容进行说明
<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
就像下面一样。对于第二种,最理想的格式是
ORC File Format
在Hive里。