MAP

仅以 Parquet、ORC 和 Avro 格式表示外部表中的映射数据。MAP 只能使用基元类型,而且不能包含其他复杂类型。您可以在表定义中使用 MAP 类型来利用数据中的列,但不能查询这些列。

MAP 的更好替代方法是 ARRAY[ROW]。行数组可以使用所有受支持的复杂类型并且可以查询。这是 INFER_TABLE_DDL 建议的表示。对于 Avro 数据,ROW 必须具有名为 keyvalue 的字段。

在单个表中,您必须使用相同的方法(MAP 或 ARRAY[ROW])定义所有映射列。

语法

在列定义中:

MAP<key,value>

列定义的映射输入格式

在外部表的列定义中,MAP 由指定为类型的键值对组成。以下示例中的表定义了产品 ID 到名称的映射。

=> CREATE EXTERNAL TABLE store (storeID INT, inventory MAP<INT,VARCHAR(100)>)
    AS COPY FROM '...' PARQUET;