本文介绍如何基于OSS并使用MaxCompute构建PB级数据仓库。通过MaxCompute对OSS上的海量数据进行分析,将您的大数据分析工作效率提升至分钟级,帮助您更高效、更低成本的挖掘海量数据价值。

前提条件

  • 已开通OSS服务,并已创建Bucket。
  • 已开通MaxCompute服务,并已授权MaxCompute访问OSS。
    • 开通MaxCompute服务请参见开通MaxCompute
    • MaxCompute需要直接访问OSS的数据,因此需要将OSS的数据相关权限赋给MaxCompute的访问账号。您可以在直接登录阿里云账号后,单击此处完成一键授权

背景信息

互联网金融应用每天都需要将大量的金融数据交换文件存放在OSS上,并需要进行超大文本文件的结构化分析。通过MaxCompute的OSS外部表查询功能,用户可以直接用外部表的方式将OSS上的大文件加载到MaxCompute进行分析,从而大幅提升整个链路的效率。

操作示例:物联网采集数据分析

  1. 将物联网数据上传到OSS。
    操作步骤请参见上传文件。您可以使用任何数据集来执行测试,以验证我们在这篇文章中概述的最佳实践。本示例在OSS上准备了一批CSV数据,Endpoint为oss-cn-beijing-internal.aliyuncs.com,Bucket为oss-odps-test,数据文件的存放路径为 /demo/vehicle.csv
  2. 创建MaxCompute Project。
    操作步骤请参见创建MaxCompute Project
  3. 通过MaxCompute创建外部表。
    操作步骤请参考创建表,语句如下:
    CREATE EXTERNAL TABLE IF NOT EXISTS ambulance_data_csv_external
    (
        vehicleId int,
        recordId int,
        patientId int,
        calls int,
        locationLatitute double,
        locationLongtitue double,
        recordTime string,
        direction string
        )
        STORED BY 'com.aliyun.odps.CsvStorageHandler'
        LOCATION 'oss://oss-cn-beijing-internal.aliyuncs.com/oss-odps-test/Demo/';
  4. 通过MaxCompute查询外部表。
    成功创建外部表后,便可如普通表一样使用该外部表。查询步骤请参见提取和分析数据
    假设/demo/vehicle.csv的数据如下:
    1,1,51,1,46.81006,-92.08174,9/14/2014 0:00,S
    1,2,13,1,46.81006,-92.08174,9/14/2014 0:00,NE
    1,3,48,1,46.81006,-92.08174,9/14/2014 0:00,NE
    1,4,30,1,46.81006,-92.08174,9/14/2014 0:00,W
    1,5,47,1,46.81006,-92.08174,9/14/2014 0:00,S
    1,6,9,1,46.81006,-92.08174,9/14/2014 0:00,S
    1,7,53,1,46.81006,-92.08174,9/14/2014 0:00,N
    1,8,63,1,46.81006,-92.08174,9/14/2014 0:00,SW
    1,9,4,1,46.81006,-92.08174,9/14/2014 0:00,NE
    1,10,31,1,46.81006,-92.08174,9/14/2014 0:00,N
    执行如下 SQL 语句:
    select recordId, patientId, direction from ambulance_data_csv_external where patientId > 25;
    输出结果如下:
    +------------+------------+-----------+
    | recordId   | patientId  | direction |
    +------------+------------+-----------+
    | 1          | 51         | S         |
    | 3          | 48         | NE        |
    | 4          | 30         | W         |
    | 5          | 47         | S         |
    | 7          | 53         | N         |
    | 8          | 63         | SW        |
    | 10         | 31         | N         |
    +------------+------------+-----------+

    更多关于OSS外部表使用方法,请参见外部表概述