本文介绍如何创建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数据库。