Data Lake Analytics中OSS LOCATION的使用说明
前言
Data Lake Analytic(后文简称 DLA)可以帮助用户通过标准的SQL语句直接对存储在OSS、TableStore上的数据进行查询分析。
在查询前,用户需要根据数据文件的格式和内容在DLA中创建一张表。Data Lake Analytics + OSS数据文件格式处理大全 一文中介绍了如何定义表的SERDE和ROW FORMAT。
本文将以存储在OSS上的文件为例详细介绍如何指定表LOCATION。
LOCATION
DLA中的建表语句的语法为
其中 LOCATION可以是数据文件本身,也可以是数据文件所在的目录。
LOCATION是数据文件
建表时可以将表直接关联到数据文件,此时的LOCATION需要是该文件在OSS上的绝对路径。
例如:
LOCATION是目录
LOCATION也可以指向OSS上的目录,该目录下的文件即是表的数据文件。
建表时,可以通过设置属性 recursive.directories 来控制是遍历该目录下的所有数据文件。默认或不显式指定recursive.directories,DLA会解析为false,即不遍历。
例如,OSS上的目录结构为
建表语句为:
当recursive.directories=false,该表的数据文件为只有LOCATION下的nation.csv一个文件,即
建表语句为:
当recursive.directories=true,该表的数据文件为LOCATION目录下及其子目录下的所有csv文件,即
注意事项
- 当LOCATION为目录时,DLA默认该目录下的数据文件为相同的数据格式,并根据建表语句中指定的SERDE解析文件。当目录下的数据文件格式不同时,DLA会解析失败,导致表中的数据信息错误,影响查询结果。
例如,建表时指定STORED AS TEXTFILE,但是目录下除了csv文件,还有orc格式的文件。这种情况下,在建表和查询时并不会报错,但是SELECT时可能会看到数据乱码或不准确。
- 目前不支持CSV文件有header。当文件的第一行为header时,需要用户自己手动处理数据;否则,会将header识别为一条数据记录
为了给大家带来更好的查询分析体验, 目前DLA还在不断完善中,欢迎大家试用,提出您的宝贵意见或建议。
本文作者:金络
本文为云栖社区原创内容,未经允许不得转载。