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和特殊列分隔符等,详细地使用方法将在各类型文件格式示例中为您讲解。