Apache Tajo 简明教程
Apache Tajo - SQL Statements
在上一章中,您已经了解如何在 Tajo 中创建表。本章说明 Tajo 中的 SQL 语句。
Create Table Statement
在转移到创建表之前,请按如下方法在 Tajo 安装目录路径中创建一个文本文件“students.csv” −
students.csv
Id |
Name |
Address |
Age |
Marks |
1 |
Adam |
23 New Street |
21 |
90 |
2 |
Amit |
12 Old Street |
13 |
95 |
3 |
Bob |
10 Cross Street |
12 |
80 |
4 |
David |
15 Express Avenue |
12 |
85 |
5 |
Esha |
20 Garden Street |
13 |
50 |
6 |
Ganga |
25 North Street |
12 |
55 |
7 |
Jack |
2 Park Street |
12 |
60 |
8 |
Leena |
24 South Street |
12 |
70 |
9 |
Mary |
5 West Street |
12 |
75 |
10 |
Peter |
16 Park Avenue |
12 |
95 |
在文件创建后,转到终端并逐个启动 Tajo 服务器和 Shell。
Create Database
使用以下命令创建新数据库 −
Query
default> create database sampledb;
OK
连接到刚刚创建的数据库“sampledb”。
default> \c sampledb
You are now connected to database "sampledb" as user “user1”.
然后,按如下方法在“sampledb”中创建表 −
Insert Table Statement
Tajo 使用以下语法将记录插入表。
Syntax
create table table1 (col1 int8, col2 text, col3 text);
--schema should be same for target table schema
Insert overwrite into table1 select * from table2;
(or)
Insert overwrite into LOCATION '/dir/subdir' select * from table;
Tajo 的插入语句与 SQL 的 INSERT INTO SELECT 语句类似。
Add Column
如需在“students”表中插入新列,请键入以下语法 −
Alter table <table_name> ADD COLUMN <column_name> <data_type>
Set Property
此属性用于更改表的属性。
Query
sampledb> ALTER TABLE students SET PROPERTY 'compression.type' = 'RECORD',
'compression.codec' = 'org.apache.hadoop.io.compress.Snappy Codec' ;
OK
在此,分配压缩类型和编解码器属性。
如需更改文本分隔符属性,请使用以下 −
Result
上述查询将生成以下结果。
sampledb> \d students
table name: sampledb.students
table uri: file:/tmp/tajo-user1/warehouse/sampledb/students
store type: TEXT
number of rows: 10
volume: 228 B
Options:
'compression.type' = 'RECORD'
'timezone' = 'Asia/Kolkata'
'text.null' = '\\N'
'compression.codec' = 'org.apache.hadoop.io.compress.SnappyCodec'
'text.delimiter' = ','
schema:
id INT4
name TEXT
addr TEXT
age INT4
mark INT4
grade TEXT
以上结果显示可以使用“SET”属性来更改表的属性。
Select Statement
SELECT 语句用于从数据库中选择数据。
Select 语句的语法如下 -
SELECT [distinct [all]] * | <expression> [[AS] <alias>] [, ...]
[FROM <table reference> [[AS] <table alias name>] [, ...]]
[WHERE <condition>]
[GROUP BY <expression> [, ...]]
[HAVING <condition>]
[ORDER BY <expression> [ASC|DESC] [NULLS (FIRST|LAST)] [, …]]
Order By Clause
ORDER BY 子句用于根据一列或多列以升序或降序对数据进行排序。Tajo 数据库默认按升序对查询结果进行排序。
Create Index Statement
CREATE INDEX 语句用于在表中创建索引。索引用于快速检索数据。当前版本仅支持存储在 HDFS 上的纯文本格式的索引。
Result
上述查询将生成以下结果。
id
———————————————
要查看已为该列分配的索引,请键入以下查询。
default> \d mytable
table name: default.mytable
table uri: file:/Users/deiva/workspace/Tajo/students.csv
store type: TEXT
number of rows: unknown
volume: 307 B
Options:
'timezone' = 'Asia/Kolkata'
'text.null' = '\\N'
'text.delimiter' = ','
schema:
id INT4
name TEXT
address TEXT
age INT4
mark INT4
Indexes:
"student_index" TWO_LEVEL_BIN_TREE (id ASC NULLS LAST )
此处,TWO_LEVEL_BIN_TREE 方法在 Tajo 中默认使用。