本文介绍如何创建Redis的CSV和JSON格式表并读取相关数据。
创建CSV格式表
针对Redis中CSV格式的数据,本示例在DMS for Data Lake Analytics中创建表dla_person_csv。
CREATE EXTERNAL TABLE dla_person_csv (
id int,
name varchar,
age int
) TBLPROPERTIES (
COLUMN_MAPPING = 'id,0;name,1;age,2',
TABLE_MAPPING = 'world_',
format = 'csv'
);
参数说明如下:
- COLUMN_MAPPING:
- DLA中的column与Redis中CSV数据的映射。
-
由于Redis底层没有column的概念,因此具体映射的方法根据COLUMN_MAPPING的不同而不同。
例如,本示例中CSV数据被解析之后形成一个string数组,对应的COLUMN_MAPPING映射到底层这个数组的
index(下标)
上: id映射到下标0,name映射到下标1,age映射到下标2。
- TABLE_MAPPING:值为world_,结合在创建Redis Schema时指定的前缀hello_,最终将查询Redis中所有前缀为hello_world_的数据。您也可以省略TABLE_MAPPING设置,则默认前缀跟表名一致,即查询的key的前缀为
hello_dla_person_csv
。
创建JSON格式表
针对Redis中JSON格式的数据,本示例在DMS for Data Lake Analytics创建外表dla_person_json:
CREATE EXTERNAL TABLE dla_person_json (
id int,
name varchar,
age int
) TBLPROPERTIES (
COLUMN_MAPPING = 'id,age;name,name;age,id',
TABLE_MAPPING = 'foo_',
format = 'json'
);
-
TABLE_MAPPING:值为foo_,结合在创建Redis Schema时指定的前缀hello_,最终将查询Redis中所有前缀为hello_foo_的数据。
-
COLUMN_MAPPING:DLA中的column与JSON中字段名的映射。id映射age,name映射到name,age映射到id。
读取CSV数据
读取dla_person_csv表数据:
select * from dla_person_csv;
+-------+------+------+
| name | id | age |
+-------+------+------+
| lily | 3 | 30 |
| lucy | 4 | 20 |
| bond | 2 | 20 |
| james | 1 | 10 |
读取JSON数据
读取dla_person_json表数据:
select * from dla_person_json;
+-------+------+------+
| name | id | age |
+-------+------+------+
| lucy | 210 | 3 |
| james | 110 | 1 |
| bond | 210 | 2 |
| lily | 310 | 3 |
接下来您可以通过MySQL客户端或者MySQL命令行工具连接DLA,使用标准SQL语句操作Redis数据库。