📜  Apache Tajo-表管理

📅  最后修改于: 2020-12-02 06:06:07             🧑  作者: Mango


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

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

  • 外部表
  • 内部表

外部表

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

以下查询是创建外部表的示例。

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

这里,

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

  • 示例指的是表名。

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

    • HDFS -hdfs://本地主机:端口/路径/到/表

    • Amazon S3 -s3://存储桶名称/表

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

    • Openstack Swift -swift://存储桶名称/表

表属性

外部表具有以下属性-

  • 时区-用户可以指定用于读取或写入表的时区。

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

内部表

内部表也称为托管表。它在称为表空间的预定义物理位置中创建。

句法

create table table1(col1 int,col2 text);

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

表空间

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

表空间配置

您在Tajo中拥有“ conf / 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 ]

这里,

  • 如果不存在-如果尚未创建同一表,则可以避免错误。

  • TABLESPACE-此子句用于分配表空间名称。

  • 存储类型-Tajo数据支持文本,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支持数据格式。让我们详细地逐一介绍每种格式。

文本

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

建立表格

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的默认表空间。

物产

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

  • text.delimiter-这是一个分隔字符。默认值为“ |”。

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

  • 时区-用于读取或写入的表。

  • 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;

木地板

实木复合地板是一种柱状存储格式。 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-布尔值用于启用/禁用字典编码。

RC文件

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

表格创建

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

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

RCFile具有以下属性-

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

  • compression.codec-压缩算法。

  • rcfile.null -NULL字符。

序列文件

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(Optimized Row Columnar)是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索引的行数跨度。