详情页标题前

阿里云云原生大数据计算服务 MaxCompute读取以分区方式存储的OSS数据-云淘科技

详情页1

MaxCompute支持创建OSS外部分区表,访问OSS上以分区方式存储的数据,通过该方式可降低读取数据量并提升数据处理效率。本文为您介绍MaxCompute支持的OSS标准分区路径格式和自定义分区路径格式。

背景信息

创建OSS外部表后,MaxCompute会全量扫描OSS目录下的所有数据,包括子目录下的数据文件。但当数据量比较大时,对全目录扫描会产生不必要的I/O消耗以及数据处理时间。通常,解决该问题有如下两种方法:

  • (推荐)方式一:在OSS上将数据以标准分区路径或自定义分区路径方式存储。通过MaxCompute新建OSS外部表时,您需要在建表语句指定分区及oss_location信息。推荐您使用标准分区路径。更多分区路径信息,请参见标准分区路径格式和自定义分区路径格式。
  • 方式二:规划多个数据存放路径。创建多个OSS外部表来读取各个路径下的数据。即每个OSS外部表指向OSS数据的一个子集。该方式操作比较繁琐,数据管理效果不佳。不推荐使用该方式。

标准分区路径格式

标准分区路径格式如下。

oss:///////...


说明 因为OSS数据是离线准备的,即通过OSS控制台或其他OSS工具上传到OSS中,所以数据的路径格式取决于上传时的格式。

参数名称 可选/必填 说明
oss_endpoint 必填 OSS访问域名信息。建议您使用OSS提供的内网域名,否则将产生OSS流量费用。更多OSS内网域名信息,请参见访问域名和数据中心。


说明 建议数据文件存放的OSS地域与MaxCompute项目所在地域保持一致。由于MaxCompute只在部分地域部署,跨地域的数据连通性可能存在问题。

Bucket名称 必填 OSS存储空间名称,即Bucket名称。查看存储空间名称操作,请参见列举存储空间。
目录名称 必填 指定OSS目录名称。目录后不需要指定文件名。
partitionKey 必填 OSS外部表的分区列名。
value 必填 OSS外部表的分区列值。

例如,某公司会将每天产生的Log文件以CSV格式存放在OSS上,并通过MaxCompute以天为周期处理数据。则存储OSS数据的标准分区路径应设置如下。

oss://oss-odps-test/log_data/year=2016/month=06/day=01/logfile
oss://oss-odps-test/log_data/year=2016/month=06/day=02/logfile
oss://oss-odps-test/log_data/year=2016/month=07/day=10/logfile
oss://oss-odps-test/log_data/year=2016/month=08/day=08/logfile
...

基于上述分区存储路径,创建OSS外部表、引入并分析分区数据的命令示例如下。

--创建OSS外部表。
create external table log_table_external (
    click STRING,
    ip STRING,
    url STRING
  )
partitioned by (
    year STRING,
    month STRING,
    day STRING
  )
stored by 'com.aliyun.odps.CsvStorageHandler'
location 'oss://oss-cn-hangzhou-internal.aliyuncs.com/oss-mc-test/log_data/';

--引入OSS分区数据。
alter table log_table_external add partition (year = '2016', month = '06', day = '01');
alter table log_table_external add partition (year = '2016', month = '06', day = '02');
alter table log_table_external add partition (year = '2016', month = '07', day = '10');
alter table log_table_external add partition (year = '2016', month = '08', day = '08');
...

--分析数据。只访问log_data/year=2016/month=06/day=01子目录下的文件(logfile),不会对整个log_data目录做全量数据扫描。
select count(distinct(ip)) from log_table_external where year = '2016' and month = '06' and day = '01';

完整的读取标准分区路径数据示例,请参见示例:通过内置文本数据解析器创建OSS外部表-分区表。

自定义分区路径格式

如果OSS上的数据实际上已按照分区方式存储,只是路径不是标准分区路径格式时,MaxCompute支持将不同的子目录绑定至不同的分区。

自定义分区路径格式示例如下,只有分区列值,无分区列名。

oss://oss-odps-test/log_data_customized/2016/06/01/logfile
oss://oss-odps-test/log_data_customized/2016/06/02/logfile
oss://oss-odps-test/log_data_customized/2016/07/10/logfile
oss://oss-odps-test/log_data_customized/2016/08/08/logfile
...

创建OSS外部表后,通过alter table ... add partition ... location ...命令指定子目录,将不同的子目录绑定到不同的分区,命令示例如下。

alter table log_table_external add partition (year = '2016', month = '06', day = '01')
location 'oss://oss-cn-hangzhou-internal.aliyuncs.com/oss-odps-test/log_data_customized/2016/06/01/';
alter table log_table_external add partition (year = '2016', month = '06', day = '02')
location 'oss://oss-cn-hangzhou-internal.aliyuncs.com/oss-odps-test/log_data_customized/2016/06/02/';
alter table log_table_external add partition (year = '2016', month = '07', day = '10')
location 'oss://oss-cn-hangzhou-internal.aliyuncs.com/oss-odps-test/log_data_customized/2016/07/10/';
alter table log_table_external add partition (year = '2016', month = '08', day = '08')
location 'oss://oss-cn-hangzhou-internal.aliyuncs.com/oss-odps-test/log_data_customized/2016/08/08/';

基于该方式,自定义分区路径后,即使数据存放不符合推荐的标准分区路径格式,您也可以正确地对子目录数据进行访问。

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/157352.html

(0)
上一篇 2023年12月10日
下一篇 2023年12月10日
详情页2

相关推荐

  • 阿里云对象存储OSS图片处理常见问题-云淘科技

    本文主要介绍您在使用OSS图片处理时可能遇到的一些常见问题及处理方法。 遇到问题时,如果有明显的参数超过显示等问题,可以使用OSS的 ?x-oss-process=image/info 参数查看原始图片中的信息是否超标。OSS单边长度不能超过4096,乘积不能高于4096*4096 。 为什么不同的图片处理参数返回的ETag值相同 图片处理场景下ETag表示…

    2023年12月10日
  • 阿里云大数据开发治理平台 DataWorksFTP数据源-云淘科技

    FTP数据源为您提供读取和写入FTP双向通道的功能,本文为您介绍DataWorks的FTP数据同步的能力支持情况。 使用限制 FTP Reader实现了从远程FTP文件读取数据并转为数据同步协议的功能,远程FTP文件本身是无结构化数据存储。对于数据同步而言,目前FTP Reader支持的功能如下所示: 支持 不支持 支持且仅支持读取TXT的文件,并要求TXT…

  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云人工智能平台PAI数据可视化-云淘科技

    本文以统计全表信息为例,为您介绍如何进行数据可视化。 前提条件 完成数据准备与预处理,详情请参见数据准备与预处理。 操作步骤 登录PAI控制台,进入工作流页面。操作详情请参见step1:进入工作流页面。 构建全表统计节点并运行。 在组件列表中搜索全表统计组件,找到后将其拖入画布,并将生成的节点作为数据准备与预处理中的类型转换-1节点的下游节点。 右键单击画布…

    2023年12月10日
  • 阿里云对象存储OSSPresto使用JindoSDK查询OSS-HDFS服务中的数据-云淘科技

    Presto是一个开源的分布式SQL查询引擎,适用于交互式分析查询。本文介绍Presto如何使用JindoSDK查询OSS-HDFS服务中的数据。 前提条件 已创建ECS实例。具体步骤,请参见选购ECS实例。 已创建Hadoop环境。具体步骤,请参见创建Hadoop运行环境。 已开通并授权访问OSS-HDFS服务。具体操作,请参见开通并授权访问OSS-HDF…

    阿里云对象存储 2023年12月10日
  • 阿里云日志服务SLS管理OSS投递任务(新版)-云淘科技

    您可以在数据投递概览页面管理OSS投递任务,包括查看OSS投递任务的基础信息、统计报表,修改配置并重启任务、删除OSS投递任务等操作。 前提条件 已创建OSS投递任务。具体操作,请参见创建OSS投递任务(新版)。 已开启任务运行日志。具体操作,请参见开启任务运行日志。 操作入口 登录日志服务控制台。 在Project列表区域,单击目标Project。 在左侧…

    阿里云日志服务SLS 2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。