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

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

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

CREATE EXTERNAL TABLE nation (
    N_NATIONKEY INT, 
    N_NAME STRING, 
    N_REGIONKEY INT, 
    N_COMMENT STRING
) 
ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' 
STORED AS TEXTFILE 
LOCATION 'oss://test-bucket-julian-1/tpch_100m/nation';

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

show create table nation;
+-------------------------------+
| Result                        |
+-------------------------------+
| CREATE EXTERNAL TABLE `nation`(
  `n_nationkey` int,
  `n_name` string,
  `n_regionkey` int,
  `n_comment` string)
   ROW FORMAT DELIMITED
   FIELDS TERMINATED BY '|'
   STORED AS `TEXTFILE`
   LOCATION'oss://bucket-name/tpch_100m/nation'|

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

STORED AS TEXTFILE 数据文件的存储格式为纯文本文件,默认文件类型。

文件中的每一行对应表中的一条记录。

STORED AS PARQUET 数据文件的存储格式为PARQUET。
STORED AS ORC 数据文件的存储格式为ORC。
STORED AS RCFILE 数据文件的存储格式为RCFILE。
STORED AS AVRO 数据文件的存储格式为AVRO。
STORED AS JSON 数据文件的存储格式为JSON(Esri ArcGIS的地理JSON数据文件除外)。

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