开发手册 欢迎您!
软件开发者资料库

Apache Tajo - 表管理

Apache Tajo表管理 - 从简单和简单的步骤学习Apache Tajo,从基本到高级概念,包括简介,体系结构,安装,配置设置,Shell命令,数据类型,操作符,SQL函数,数学函数,字符串函数,日期时间函数,JSON函数,数据库创建,表管理,SQL语句,聚合和窗口函数,SQL查询,存储插件,与HBase集成,与Hive集成,OpenStack Swift集成,JDBC接口,自定义函数。

表是一个数据源的逻辑视图.它由逻辑架构,分区,URL和各种属性组成. Tajo表可以是HDFS中的目录,单个文件,一个HBase表或RDBMS表.

Tajo支持以下两种类型的表 :

  • 外部表

  • 内部表

外部表

创建表时,外部表需要location属性.例如,如果您的数据已作为Text/JSON文件或HBase表存在,则可以将其注册为Tajo外部表.

以下查询是外部表创建的示例./p>

create external table sample(col1 int,col2 text,col3 int) location ‘hdfs://path/to/table';

此处,

  • 外部关键字 : 这用于创建外部表.这有助于在指定位置创建表.

  • 示例引用表名.

  • 位置 : 它是HDFS,Amazon S3,HBase或本地文件系统的目录.要为目录分配位置属性,请使用以下URI示例 :

    • HDFS &minus ; hdfs://localhost:port/path/to/table

    • Amazon S3 :  s3://bucket-name/table

    • 本地文件系统 :  file:///path/to/table

    • Openstack Swift :  swift://bucket-name/table

表属性

外部表具有以下属性 :

  • TimeZone : 用户可以指定读取或写入表格的时区.

  • 压缩格式 : 用于使数据大小紧凑.例如,text/json文件使用 compression.codec 属性.

内部表

内部表也称为托管表.它是在一个名为Tablespace的预定义物理位置创建的.

语法

create table table1(col1 int,col2 text);

默认情况下,Tajo使用位于"conf/tajo-site.xml"中的"tajo.warehouse.directory".要为表分配新位置,可以使用表空间配置.

表空间

表空间用于定义存储系统中的位置.仅支持内部表.您可以按名称访问表空间.每个表空间可以使用不同的存储类型.如果您没有指定表空间,Tajo将使用根目录中的默认表空间.

表空间配置

您有"conf Tajo中的/tajo-site.xml.template".复制文件并将其重命名为"storagesite.json".此文件将充当表空间的配置. Tajo数据格式使用以下配置 :

HDFS配置

$ vi conf/storage-site.json {    "spaces": {        "${tablespace_name}": {           "uri": "hdfs://localhost:9000/path/to/Tajo"        }    } }

HBase配置

$ vi conf/storage-site.json {    "spaces": {        "${tablespace_name}": {           "uri": "hbase:zk://quorum1:port,quorum2:port/"        }    } }

文本文件配置

$ vi conf/storage-site.json {    "spaces": {        "${tablespace_name}": {           "uri": "hdfs://localhost:9000/path/to/Tajo"       }    } }

表空间创建

可以访问Tajo的内部表记录仅从另一张桌子.您可以使用表空间配置它.

语法

CREATE TABLE [IF NOT EXISTS]  [(column_list)] [TABLESPACE tablespace_name] [using  [with ( = , ...)]] [AS ]

此处

  • IF NOT EXISTS : 如果尚未创建相同的表,则可以避免错误.

  • TABLESPACE : 此子句用于分配表空间名称.

  • 存储类型 :  Tajo数据支持text,JSON,HBase,Parquet,Sequencefile和ORC等格式.

  • AS select语句 : 从另一个表中选择记录.

配置表空间

启动Hadoop服务并打开文件"conf/storage-site.json",然后添加以下更改 :

$ vi conf/storage-site.json {    "spaces": {        "space1": {           "uri": "hdfs://localhost:9000/path/to/Tajo"       }    } }

这里,Tajo将引用HDFS位置的数据, space1 是表空间名称.如果你没有启动Hadoop服务,你就不能注册表空间.

查询

default> create table table1(num1 int,num2 text,num3 float) tablespace space1;

上述查询创建一个名为"table1"和" space1"指的是表空间名称.

数据格式

Tajo支持数据格式.让我们通过每一个for一个接一个地详细说明.

文本

字符分隔值的纯文本文件表示由行和列组成的表格数据集.每行都是纯文本行.

创建表

default> create external table customer(id int,name text,address text,age int)    using text with('text.delimiter'=',') location ‘file:/Users/workspace/Tajo/customers.csv’;

此处,"customers.csv"文件是指位于Tajo安装目录中的逗号分隔值文件.

要使用文本格式创建内部表,请使用以下查询 :

default> create table customer(id int,name text,address text,age int) using text;

在上面的查询中,您没有分配任何表空间,因此它将占用Tajo的默认表空间.

属性

文本文件格式具有以下属性 :

  • 文本.delimiter : 这是一个分隔符.默认为"|".

  • compression.codec : 这是一种压缩格式.默认情况下,它被禁用.您可以使用指定的算法更改设置.

  • timezone : 用于阅读或写作的表格.

  • text.error-tolerance.max-num : 最大容差级别数.

  • text.skip.headerlines : 每个跳过的标题行数.

  • text.serde : 这是序列化属性.

JSON

Apache Tajo支持用于查询数据的JSON格式. Tajo将JSON对象视为SQL记录.一个对象等于Tajo表中的一行.让我们考虑"array.json"如下 :

$ hdfs dfs -cat /json/array.json {    "num1" : 10,    "num2" : "simple json array",    "num3" : 50.5 }

创建此文件后,切换到Tajo shell并键入以下查询以使用JSON格式创建表.

查询

default> create external table sample (num1 int,num2 text,num3 float)    using json location ‘json/array.json’;

始终记住文件数据必须与表模式匹配.否则,您可以省略列名并使用不需要列列表的*.

要创建内部表,请使用以下查询 :

default> create table sample (num1 int,num2 text,num3 float) using json;

Parquet

Parquet是一种柱状存储格式. Tajo使用Parquet格式进行简单,快速和高效的访问.

表创建

以下查询是创建表的示例 :

CREATE TABLE parquet (num1 int,num2 text,num3 float) USING PARQUET;

Parquet文件格式具有以下属性 :

  • parquet.block.size : 在内存中缓冲的行组的大小.

  • parquet.page.size : 页面大小用于压缩.

  • parquet.compression : 用于压缩页面的压缩算法.

  • parquet.enable.dictionary : 布尔值是启用/禁用字典编码.

RCFile

RCFile是记录列式文件.它由二进制键/值对组成.

表创建

以下查询是创建表的示例 :

CREATE TABLE Record(num1 int,num2 text,num3 float)USING RCFILE;

RCFile具有以下属性 :

  • rcfile.serde : 自定义反序列化器类.

  • compression.codec : 压缩算法.

  • rcfile.null :  NULL字符.

SequenceFile

SequenceFile是Hadoop中的基本文件格式,由密钥组成/值对.

表创建

以下查询是创建表的示例 :

CREATE TABLE seq(num1 int,num2 text,num3 float) USING sequencefile;

此序列文件具有Hive兼容性.这可以用Hive编写,

CREATE TABLE table1 (id int, name string, score float, type string) STORED AS sequencefile;

ORC

ORC(优化行列)是来自Hive的柱状存储格式.

表创建

以下查询是创建表的示例 :

CREATE TABLE optimized(num1 int,num2 text,num3 float) USING ORC;

ORC格式具有以下属性 :

  • orc.max.merge.distance : 读取ORC文件,当距离较低时合并.

  • orc.stripe.size : 这是每个条纹的大小.

  • orc.buffer.size : 默认值为256KB.

  • orc.rowindex.stride : 这是ORC索引的行数.