全部产品
云市场

存储格式与SerDe

更新时间:2019-06-19 14:32:15

DLA内置了处理各类数据文件的Serialize/Deserilize(简称SerDe,用于序列化和反序列化),您无需编写程序,直接选用一款或多款SerDe来匹配OSS上的数据文件格式。通过SerDe,DLA可以对OSS上的多种格式的文件进行查询分析,包括纯文本文件(CSV、TSV等)、ORC、PARQUET、JSON、RCFILE以及AVRO格式的文件。

在DLA中创建OSS文件表时,您需要通过STORED AS指定OSS上的数据文件格式。

例如,以下示例指定数据文件的格式为TXT。

  1. CREATE EXTERNAL TABLE nation (
  2. N_NATIONKEY INT,
  3. N_NAME STRING,
  4. N_REGIONKEY INT,
  5. N_COMMENT STRING
  6. )
  7. ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'
  8. STORED AS TEXTFILE
  9. LOCATION 'oss://test-bucket-julian-1/tpch_100m/nation';

表创建成功后,可以使用SHOW CREATE TABLE查看原始建表语句。

  1. show create table nation;
  2. +-------------------------------+
  3. | Result |
  4. +-------------------------------+
  5. | CREATE EXTERNAL TABLE `nation`(
  6. `n_nationkey` int,
  7. `n_name` string,
  8. `n_regionkey` int,
  9. `n_comment` string)
  10. ROW FORMAT DELIMITED
  11. FIELDS TERMINATED BY '|'
  12. STORED AS `TEXTFILE`
  13. LOCATION'oss://bucket-name/tpch_100m/nation'|

下表中列出了目前DLA支持的文件格式,当针对下列格式的文件建表时,可以直接使用STORED AS,DLA会选择合适的SERDE/INPUTFORMAT/OUTPUTFORMAT。

SerDe类型
LazySimpleSerDe 处理TEXTFILE文本文件格式。
ColumnarSerDe 数据文件的存储格式为ORC。
RegexSerDe 数据文件的存储格式为PARQUET。
STORED AS RCFILE 数据文件的存储格式为RCFILE。
STORED AS AVRO 数据文件的存储格式为AVRO。
STORED AS JSON 数据文件的存储格式为JSON (Esri ArcGIS的地理JSON数据文件除外)。

通过STORED AS指定文件格式的同时,还可以根据具体文件的特点,指定SerDe和特殊的列分隔符等,详细地使用方法将在各类型文件格式示例中为您讲解。