Data Lake Analytics中OSS LOCATION的使用说明
前言
Data Lake Analytic(后文简称 DLA)可以帮助用户通过标准的SQL语句直接对存储在OSS、TableStore上的数据进行查询分析。
在查询前,用户需要根据数据文件的格式和内容在DLA中创建一张表。Data Lake Analytics + OSS数据文件格式处理大全 一文中介绍了如何定义表的SERDE和ROW FORMAT。
本文将以存储在OSS上的文件为例详细介绍如何指定表LOCATION。
LOCATION
DLA中的建表语句的语法为
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
其中 LOCATION可以是数据文件本身,也可以是数据文件所在的目录。
LOCATION是数据文件
建表时可以将表直接关联到数据文件,此时的LOCATION需要是该文件在OSS上的绝对路径。
例如:
CREATE EXTERNAL TABLE loc_file_csv(
    N_NATIONKEY INT,
    N_NAME STRING,
    N_REGIONKEY INT,
    N_COMMENT STRING
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'
STORED AS TEXTFILE
LOCATION 'oss://my-bucket/datasets/test/test_create/create_table/csv/dir1/dir2/nation.csv';
LOCATION是目录
LOCATION也可以指向OSS上的目录,该目录下的文件即是表的数据文件。
建表时,可以通过设置属性 recursive.directories 来控制是遍历该目录下的所有数据文件。默认或不显式指定recursive.directories,DLA会解析为false,即不遍历。
例如,OSS上的目录结构为
2018-07-05 11:16:11 1752.00B Standard oss://my-bucket/datasets/test/test_create/create_table/csv/dir1/dir2/nation.csv
2018-07-05 11:15:57 1752.00B Standard oss://my-bucket/datasets/test/test_create/create_table/csv/dir1/nation.csv
2018-07-05 11:16:17 1752.00B Standard oss://my-bucket/datasets/test/test_create/create_table/csv/nation.csv
建表语句为:
CREATE EXTERNAL TABLE loc_file_csv(
    N_NATIONKEY INT,
    N_NAME STRING,
    N_REGIONKEY INT,
    N_COMMENT STRING
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'
STORED AS TEXTFILE
LOCATION 'oss://my-bucket/datasets/test/test_create/create_table/csv/'
TBLPROPERTIES ('recursive.directories' = 'false');
当recursive.directories=false,该表的数据文件为只有LOCATION下的nation.csv一个文件,即
oss://my-bucket/datasets/test/test_create/create_table/csv/nation.csv
建表语句为:
CREATE EXTERNAL TABLE loc_file_csv(
    N_NATIONKEY INT,
    N_NAME STRING,
    N_REGIONKEY INT,
    N_COMMENT STRING
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'
STORED AS TEXTFILE
LOCATION 'oss://my-bucket/datasets/test/test_create/create_table/csv/'
TBLPROPERTIES ('recursive.directories' = 'true');
当recursive.directories=true,该表的数据文件为LOCATION目录下及其子目录下的所有csv文件,即
oss://my-bucket/datasets/test/test_create/create_table/csv/nation.csv
oss://my-bucket/datasets/test/test_create/create_table/csv/dir1/nation.csv
oss://my-bucket/datasets/test/test_create/create_table/csv/dir1/dir2/nation.csv
注意事项
- 当LOCATION为目录时,DLA默认该目录下的数据文件为相同的数据格式,并根据建表语句中指定的SERDE解析文件。当目录下的数据文件格式不同时,DLA会解析失败,导致表中的数据信息错误,影响查询结果。
 
例如,建表时指定STORED AS TEXTFILE,但是目录下除了csv文件,还有orc格式的文件。这种情况下,在建表和查询时并不会报错,但是SELECT时可能会看到数据乱码或不准确。
- 目前不支持CSV文件有header。当文件的第一行为header时,需要用户自己手动处理数据;否则,会将header识别为一条数据记录
 
为了给大家带来更好的查询分析体验, 目前DLA还在不断完善中,欢迎大家试用,提出您的宝贵意见或建议。
本文作者:金络
本文为云栖社区原创内容,未经允许不得转载。
Data Lake Analytics中OSS LOCATION的使用说明的更多相关文章
- 如何在Data Lake Analytics中使用临时表
		
前言 Data Lake Analytics (后文简称DLA)是阿里云重磅推出的一款用于大数据分析的产品,可以对存储在OSS,OTS上的数据进行查询分析.相较于传统的数据分析产品,用户无需将数据重新 ...
 - 使用Data Lake Analytics从OSS清洗数据到AnalyticDB
		
前提 必须是同一阿里云region的Data Lake Analytics(DLA)到AnalyticDB的才能进行清洗操作: 开通并初始化了该region的DLA服务: 开通并购买了Analytic ...
 - 使用Data Lake Analytics + OSS分析CSV格式的TPC-H数据集
		
0. Data Lake Analytics(DLA)简介 关于Data Lake的概念,更多阅读可以参考:https://en.wikipedia.org/wiki/Data_lake 以及AWS和 ...
 - Data Lake Analytics,大数据的ETL神器!
		
0. Data Lake Analytics(简称DLA)介绍 数据湖(Data Lake)是时下大数据行业热门的概念:https://en.wikipedia.org/wiki/Data_lake. ...
 - Data Lake Analytics + OSS数据文件格式处理大全
		
0. 前言 Data Lake Analytics是Serverless化的云上交互式查询分析服务.用户可以使用标准的SQL语句,对存储在OSS.TableStore上的数据无需移动,直接进行查询分析 ...
 - Data Lake Analytics账号和权限体系详细介绍
		
一.Data Lake Analytics介绍 数据湖(Data Lake)是时下大数据行业热门的概念:https://en.wikipedia.org/wiki/Data_lake.基于数据湖做分析 ...
 - 如何使用Data Lake Analytics创建分区表
		
前言 Data Lake Analytics(后文简称DLA)提供了无服务化的大数据分析服务,帮助用户通过标准的SQL语句直接对存储在OSS.TableStore上的数据进行查询分析. 在关系型数据库 ...
 - 使用Data Lake Analytics读/写RDS数据
		
Data Lake Analytics 作为云上数据处理的枢纽,最近加入了对于RDS(目前支持 MySQL , SQLServer ,Postgres 引擎)的支持, 这篇教程带你玩转 DLA 的 R ...
 - Data Lake Analytics: 使用DataWorks来调度DLA任务
		
DataWorks作为阿里云上广受欢迎的大数据开发调度服务,最近加入了对于Data Lake Analytics的支持,意味着所有Data Lake Analytics的客户可以获得任务开发.任务依赖 ...
 
随机推荐
- 【MFC 】关于对话框中的OnVScroll() 和 OnHScroll
			
原文地址:[MFC 中]关于对话框中的OnVScroll() 和 OnHScroll()函数作者:Winters 对话框中的滑块,微调控件都会向OnVScroll() 和OnHScroll() ...
 - Git同平台下多个账号配置
			
在公司要使用公司和自己的两个账号都往GitHub上面提交,所以整理成笔记 具体配置项 StrictHostKeyChecking no UserKnownHostsFile /dev/null # 为 ...
 - 《DSP using MATLAB》Problem 7.34
			
代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output In ...
 - fork 与 vfork
			
fork 函数复制父进程(包括父进程的地址空间)产生子进程 在父进程返回子进程ID,在子进程本身返回0. fork一般有两个用处: 1.网络服务进程等待请求,新请求到来,fork一个子进程处理,父进程 ...
 - Leetcode109. Convert Sorted List to Binary Search Tree有序链表转换二叉搜索树
			
给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1. 示例: 给定的有序链表: [-10 ...
 - 傳説中的 jsonp
			
jsonp的由來 1 . 網頁上的東西衹要跨域了就不能傳送或者接受數據了.不管是什麽衹要是跨域.Ajax直接请求普通文件存在跨域无权限访问的问题, 2 . 但是src這個東西比較厲害了,請求哪裏都可以 ...
 - c#多线程通信之委托(事件)
			
在研究c# 线程之间通信时,发现传统的方法大概有三种 ①全局变量,由于同一进程下的多个进程之间共享数据空间,所以使用全局变量是最简单的方法,但要记住使用volatile进行限制. ②线程之间发送消息( ...
 - jsp中生成的验证码和存在session里面的验证码不一致的处理
			
今天在调试项目的时候发现,在提交表单的时候的验证码有问题,问题是这样的:就是通过debug模式查看得知:jsp页面生成的验证码和表单输入的页面输入的一样,但是到后台执行的时候,你会发现他们是不一样的, ...
 - 2019.8.13 NOIP模拟测试19 反思总结
			
最早写博客的一次∑ 听说等会儿还要考试[真就两天三考啊],教练催我们写博客… 大约是出题最友好的一次[虽然我还是炸了],并且数据也非常水…忽视第三题的锅的话的确可以这么说.但是T3数据出锅就是你的错了 ...
 - 【CodeVS】【2004年NOIP全国联赛提高组】1057 津津的储蓄计划
			
1057 津津的储蓄计划 2004年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 青铜 Bronze 题目描述 Description 津津的零花钱一直都是 ...