Tajo教程

Tajo 表管理

表是一个数据源的逻辑视图。它由逻辑架构、分区、URL 和各种属性组成。 Tajo 表可以是 HDFS 中的一个目录、单个文件、一个 HBase 表或一个 RDBMS 表。
Tajo 支持以下两种类型的表-
external table internal table

External Table

外部表在创建表时需要位置属性。例如,如果您的数据已经作为文本/JSON 文件或 HBase 表存在,您可以将其注册为 Tajo 外部表。
以下查询是创建外部表的示例。
create external table sample(col1 int,col2 text,col3 int) location ‘hdfs://path/to/table';
这里,
外部关键字− 用于创建外部表。这有助于在指定位置创建表。 示例是指表名。 Location-它是 HDFS、Amazon S3、HBase 或本地文件系统的目录。要为目录分配位置属性,请使用以下 URI 示例- HDFS-hdfs://localhost:port/path/to/table Amazon S3-s3://bucket-name/table local file system-file:///path/to/table Openstack Swift-swift://bucket-name/table

Table Properties

外部表具有以下属性-
TimeZone-用户可以指定读取或写入表格的时区。 压缩格式-用于使数据大小紧凑。例如,text/json 文件使用 compression.codec 属性。

Internal Table

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

语法

create table table1(col1 int,col2 text);
默认情况下,Tajo 使用位于"conf/tajo-site.xml"中的"tajo.warehouse.directory"。要为表分配新位置,您可以使用表空间配置。

Tablespace

表空间用于定义存储系统中的位置。它仅支持内部表。您可以按名称访问表空间。每个表空间可以使用不同的存储类型。如果不指定表空间,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] <table_name> [(column_list)] [TABLESPACE tablespace_name] 
[using <storage_type> [with (<key> = <value>, ...)]] [AS <select_statement>]
这里,
IF NOT EXISTS-如果尚未创建同一个表,这可以避免错误。 TABLESPACE-此子句用于分配表空间名称。 Storage type-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-这是一种压缩格式。默认情况下,它是禁用的。您可以使用指定的算法更改设置。 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-布尔值是启用/禁用字典编码。

RC文件

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

表创建

以下查询是创建表的示例-
CREATE TABLE Record(num1 int,num2 text,num3 float) USING RCFILE;
RCFile 具有以下属性-
rcfile.serde-自定义解串器类。 compression.codec-压缩算法。 rcfile.null-NULL 字符。

SequenceFile

SequenceFile 是 Hadoop 中的一种基本文件格式,由键/值对组成。

Table creation

以下查询是创建表的示例-
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 的列式存储格式。

Table creation

以下查询是创建表的示例-
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 索引的行数。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4