Apache Tajo 简明教程
Apache Tajo - Table Management
表是某个数据源的逻辑视图。它包含逻辑模式、分区、URL 和各种属性。Tajo 表可以是 HDFS 中的目录、单个文件、某个 HBASE 表或某个 RDBMS 表。
Tajo 支持以下两种类型的表 −
-
external table
-
internal table
External Table
外部表在创建表时需要 location 属性。例如,如果你的数据已作为文本/JSON 文件或 HBASE 表存在,你可以将它注册为 Tajo 外部表。
以下查询是外部表创建的示例。
create external table sample(col1 int,col2 text,col3 int) location ‘hdfs://path/to/table';
在此,
-
External keyword − 这用于创建外部表,用于在指定位置创建表。
-
Sample 指代表名称。
-
Location − 它是 HDFS、Amazon S3、HBASE 或本地文件系统的目录。要为目录分配 location 属性,请使用以下 URI 示例 − HDFS − hdfs://localhost:port/path/to/table Amazon S3 − s3://bucket-name/table local file system − [role="bare"] [role="bare"]file:///path/to/table Openstack Swift − swift://bucket-name/table
Table Properties
外部表具有以下属性 −
-
TimeZone − 用户可以指定时区以读取或写入表。
-
Compression format − 用于压缩数据大小。例如,text/json 文件使用 compression.codec 属性。
Tablespace
表空间用于定义存储系统中的位置。它仅支持内部表。你可以按名称访问表空间。每个表空间可以使用不同的存储类型。如果你不指定表空间,Tajo 则在根目录中使用默认表空间。
Tablespace Configuration
你在 Tajo 中有 “conf/tajo-site.xml.template” 。复制此文件并将其重命名为 “storagesite.json” 。此文件会充当表空间的配置。Tajo 数据格式使用以下配置 −
HDFS Configuration
$ vi conf/storage-site.json {
"spaces": {
"${tablespace_name}": {
"uri": “hdfs://localhost:9000/path/to/Tajo"
}
}
}
Tablespace Creation
只能从另一个表中访问 Tajo 的内部表记录。你可以使用表空间对其进行配置。
Syntax
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、序列文件和 ORC 等格式。
-
AS select statement − 从另一个表中选择记录。
Configure Tablespace
启动 Hadoop 服务并打开文件 “conf/storage-site.json” ,然后添加以下更改 −
$ vi conf/storage-site.json {
"spaces": {
“space1”: {
"uri": “hdfs://localhost:9000/path/to/Tajo"
}
}
}
在此,Tajo 将引用来自 HDFS 位置的数据, space1 是表空间名称。如果您没有启动 Hadoop 服务,则无法注册表空间。
Data formats
Tajo 支持数据格式。让我们详细逐一了解每种格式。
Creating Table
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 的默认表空间。
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 格式创建表。