阿里云离线计算初步使用

了解数据上云的流程,对数据进入阿里云平台的技术方案进行了解,方案主要涉及技术的流程,成本以等方面的考虑。
阿里云的使用-个人云时代
借助云技术,开创新时代

大数据离线计算--阿里云使用demo

1.使用的流程--将数据存储到OSS
2.在Maxcompute创建外部表,同时创建内部表,将数据通过内部表形式导入到Maxcompute
3.在Maxcompute计算
4.quick BI 读取Maxcompute 数据-创建报表

1.过程:

01.源头对接:
    数据采集-
    将采集的数据发送至OSS    
02.上云处理
        01.按照文件目录以及文件分区设置好OSS
        02.只需要创建一个外部表,便可把这张表作为源表进行查询
        03.创建Maxcompute内部表,并将数据从外部表中导入
        04.内部表持续累加,外部表周期性删除即可
        05.对内部表进行maxcompute分析,并将结果保存
        06.对计算结果进行BI展示
    涉及的阿里云产品
            OSS
            Maxcompute
            QuickBI
03.服务输出:
        Maxcompute 计算结果保存以及调用
        邮件发送报表

2.涉及其他方面:

数据安全和管理:
数据质量
成本

1.创建OSS对象,并存储数据

01.OSS开通服务
02.创建存储空间(bucket)
    通过管理控制台等方式进行文件存储操作
        01.OSS首先创建存储空间(bucket)
        02.向存储空间中上传您的数据或文件(即OSS中的对象Object)
            上传方式:
                    大文件上传(断点续传)
                    小文件上传(普通上传)
                    流式文件上传(追加上传)
                    网页上传(表单上传)
            下载方式
                    文件访问URL
                    OSS直接下载
                    配合CDN加速下载
        03.上传和下载场景
                客户端直传
                服务器上传
        04.授权管理
            访问控制
                    基础访问控制(Accesskey)
                    主子账号控制(RAM)
                    临时访问授权(STS)
                    访问日志
        05.对象存储OSS多种工具
                    OSS客户端工具 可视化文件管理
                    OSSFS工具 云端数据本地挂载
                    OSS FTP工具 论坛附件云端存储
                    OSS迁移工具 海量数据无缝迁移
                    Aliyun OSSUTIL 全新上线更好用
                    OSS图片处理工具
  OSS上文件路径
    OSS 的连接格式为oss://oss-cn-shanghai-internal.aliyuncs.com/Bucket名称/目录名称/。目录后不要加文件名称
     自定义 Extractor 实现更复杂的数据处理抽取逻辑
I、  01.Bucket   ali 
        02. directory: 
                    test
                        parttag=2017-11-26/C_****.json
                        parttag=2017-11-26/C_****.json
                    example
                        parttag=2017-11-26/

        bucket 为oss-odps-test                                       ali                     
        endpoint 为oss-cn-shanghai-internal.aliyuncs.com,            oss-cn-beijing.aliyuncs.com
        数据文件的存放路径为/demo/vehicle.csv                         da/parttag=2017-11-26/C_****.json

2.在Maxcompute创建外部表,同时创建内部表,将数据通过内部表形式导入到Maxcompute

 01.    前提条件:
    实名认证云账号,生成 AccessId  Accesskey
    给云账号赋建表权限
 02.    创建表方式
    a)  可视化建表
    b)  语句建表
以下采用语句建表
2.1-- 创建外部表
DROP TABLE IF EXISTS lt_da_item_external;
CREATE EXTERNAL TABLE IF NOT EXISTS lt_da_item_external
(
item_id  string,
 item_geohash  string,
 item_category  string
)
STORED BY 'com.aliyun.odps.CsvStorageHandler' 
WITH SERDEPROPERTIES (
 'odps.properties.rolearn'='acs:ram::***********:role/aliyunodpsdefaultrole'
) 
LOCATION 'oss://oss-cn-shanghai-internal.aliyuncs.com/compt/alidata/item/';

DROP TABLE IF EXISTS lt_da_user_external;
CREATE EXTERNAL TABLE IF NOT EXISTS   lt_da_user_external(
 user_id  string,
 item_id  string,
 behavior_type  string,
 user_geohash  string,
 item_category  string,
 time  string)
STORED BY 'com.aliyun.odps.CsvStorageHandler' 
WITH SERDEPROPERTIES (
 'odps.properties.rolearn'='acs:ram::***********:role/aliyunodpsdefaultrole'
) 
LOCATION 'oss://oss-cn-shanghai-internal.aliyuncs.com/compt/alidata/user/';

2.2-- 创建内部表
DROP TABLE  IF EXISTS  lt_da_item;
CREATE TABLE IF NOT EXISTS lt_da_item
(item_id  string,
 item_geohash  string,
 item_category  string);

DROP TABLE IF EXISTS lt_da_user;
CREATE TABLE IF NOT EXISTS  lt_da_user(
 user_id  string,
 item_id  string,
 behavior_type  string,
 user_geohash  string,
 item_category  string,
 time  string);

2.3-- 导入数据-- 外部分区表数据导入内部表操作  lt_da_item_external
INSERT OVERWRITE TABLE lt_da_item
SELECT  item_id,item_geohash ,item_category FROM lt_da_item_external ;

INSERT OVERWRITE TABLE   lt_da_user
SELECT user_id. item_id,behavior_type,user_geohash ,item_category,time  FROM lt_da_user_external ;  
III、添加表数据
 ALTER TABLE ca_test_amp_external 
 ADD PARTITION (parttag='2017-11-26') location '/parquetdata/test/data/amp/20170929'
-- 外部分区表数据导入内部表操作
 INSERT OVERWRITE TABLEca_test_amp 
 PARTITION(parttag = '2017-11-16') 
 SELECT l,version FROM ca_test_amp_external  WHERE parttag = '2017-11-26';

 IV-01、针对内部表进行计算

 IV-02 针对内部表进行计算,并保留计算结果

 V、将计算结果使用报表进行可视化

3.在Maxcompute计算

-- 查看所有表
show tables;
--查看外部表数据
-- 查看表描述
desc  lt_da_user_external;
+------------------------------------------------------------------------------------+
| Owner: ALIYUN$yt | Project: input_demo                                  |
| TableComment:                                                                      |
+------------------------------------------------------------------------------------+
| CreateTime:               2017-11-27 15:12:29                                      |
| LastDDLTime:              2017-11-27 15:12:29                                      |
| LastModifiedTime:         2017-11-27 15:12:29                                      |
+------------------------------------------------------------------------------------+
| ExternalTable: YES                                                                 |
+------------------------------------------------------------------------------------+
| Native Columns:                                                                    |
+------------------------------------------------------------------------------------+
| Field           | Type       | Label | Comment                                     |
+------------------------------------------------------------------------------------+
| item_id         | string     |       |                                             |
| item_geohash    | string     |       |                                             |
| item_category   | string     |       |                                             |
+------------------------------------------------------------------------------------+

SELECT  item_id,item_geohash ,item_category FROM lt_da_item_external  limit 100;

4.Quick BI

选定数据源--创建数据集--新建工作表或新建仪表盘--数据门户

附录:

00.名词解释
    对象存储 OSS
        阿里云对象存储服务(Object Storage Service,简称 OSS)
        可以通过调用 API,在任何应用、任何时间、任何地点上传和下载数据,
            也可以通过 Web 控制台对数据进行简单的管理。
            OSS 适合存放任意类型的文件,适合各种网站、开发企业及开发者使用。
            按实际容量付费真正使您专注于核心业务。
01.-- 单独插入
insert into table lt_da_user  
values ('a',1),('b',2),('c',3);
创建内部表,并从其他表复制表结构
CREATE TABLE table_name LIKE table_name2 ;
02.-- 出现错误
Semantic analysis exception - external table checking failure, error message: {"RequestId":"455DA0B3-28FC-4639-9AD6-9EED6AABFB1D",
"HostId":"sts.aliyuncs.com","Code":"NoPermission","Message":"You are not authorized to do this action. You should be authorized by RAM."}
    注意设置权限,需要有OSS权限以及大数据权限
        AliyunOSSFullAccess
        AliyunODPSRolePolicy
分区:
    在实际的生产环境中,使用分区,可以避免很多问题。从OSS到Maxcompute

    -- 分区表的生命周期
    --分区表的最后一个分区被回收后,该表不会被删除。生命周期只能设定到表级别,不能再分区级
     ALTER TABLE table_name SET lifecycle days;
    1.OSS上存储数据时需要遵循location的路径格式。如有效的路径存储layout:
            //oss-odps-test/log_data/year=2016/month=06/day=01/logfile

参考:

https://help.aliyun.com/document_detail/30267.html?spm=5176.doc30265.6.554.19UEfT
MaxCompute常用语句汇总(更新ing) https://yq.aliyun.com/articles/222955?utm_content=m_32180
帮助企业做好MaxCompute大数据平台成本优化的最佳实践 https://yq.aliyun.com/articles/257512?spm=5176.8091938.0.0.uoFG4n
访问 OSS 非结构化数据 https://help.aliyun.com/document_detail/45389.html?spm=5176.product27797.6.690.q1k51L
DDL语句 https://help.aliyun.com/document_detail/27862.html?spm=5176.doc45389.2.12.IJG4cn

blogroll

social