数据类型

本文介绍Data Lake Analytics兼容Hive的数据类型。

建表语法

CREATE EXTERNAL TABLE [IF NOT EXISTS] [db_name.]table_name
    [(col_name data_type [COMMENT col_comment], ... [constraint_specification])]
    [COMMENT table_comment]
    [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
    [ROW FORMAT row_format]
    [STORE AS file_format]
        | STORED BY 'storage.handler.class.name' [WITH SERDEPROPERTIES (...)]
    LOCATION oss_path
说明

详细的建表说明见用户指南部分

数值类型

  • TINYINT,1 byte 有符号整数,-128至127。

  • SMALLINT,2 byte 有符号整数,-32,768至32,767。

  • INT/INTEGER,4 byte 有符号整数,-2,147,483,648至2,147,483,647。

  • BIGINT,8 byte 有符号整数,-9,223,372,036,854,775,808至9,223,372,036,854,775,807。

  • FLOAT,4 byte单精度浮点数。

  • DOUBLE,8 byte双精度浮点数。

  • DECIMAL(p, s) ,固定精度和范围的数值类型。

字符类型

  • STRING,存储变长的超大文本字符,可以使用单引号或者双引号。

  • VARCHAR,存储变长文本,但是长度上只允许在1-65355之间。

  • CHAR,用来存储定长的字符。

时间日期类

  • TIMESTAMP,支持纳秒级别的UNIX时间戳。

  • DATE,用来存储日期数据:年月日,YYYY-MM-DD。

布尔类型

  • BOOLEAN,布尔类型,true或false。

集合数据类型

  • ARRAY,格式为ARRAY<data_type>,元素访问通过0下标开始。

  • MAP,是一组key-value元组集合,key只能是基本类型,值可以是任意类型。map的元素访问则使用[],例如map['key1']。

  • STRUCT,类似对象,如果数据类型定义为colum1 STRUCT{var1 STRING,var2 int},使用colum1.var2来访问。

建表示例

1.创建不带分区的表

CREATE EXTERNAL TABLE nation_text_string (
  N_NATIONKEY INT COMMENT 'column N_NATIONKEY',
  N_NAME STRING,
  N_REGIONKEY INT,
  N_COMMENT STRING
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'
STORED AS TEXTFILE LOCATION 'oss://your-bucket/path/to/nation_text';

2.创建分区表

CREATE EXTERNAL TABLE primitives_text_p (
  id INT COMMENT 'default',
  bool_col BOOLEAN COMMENT 'default',
  tinyint_col TINYINT COMMENT 'default',
  date_string_col STRING COMMENT 'default',
  string_col STRING COMMENT 'default',
  timestamp_col TIMESTAMP COMMENT 'default'
  )
PARTITIONED BY (year INT COMMENT 'default', month INT COMMENT 'default')
ROW FORMAT DELIMITED
  FIELDS TERMINATED BY ','
  ESCAPED BY '\\'
STORED AS TEXTFILE
LOCATION 'oss://your-bucket/path/to/primitives_text_p';