day63、64 阿里云 datawork


I know, i know
地球另一端有你陪我




一、数据开发 – DataWorks

1、创建表

1 从其他数据源中同步

在这里插入图片描述
MySQL 的话,本地因为没有那样的外网地址,所以需要额外购买阿里云的云数据库

2 手动创建表

在这里插入图片描述请添加图片描述
一级主题、二级主题
类似数据仓库中的命名规范,不同表拥有类似父子关系

主键
此处查询的时候并不会考虑主键,只是做一个标记,不会做约束
只会检查是否存在重复

接着右键表导入数据,记得注意首行是否是数据,对应勾选

3、业务流程

1、手拖或者右键新建能够建立新的独立节点,
节点内部可以处理不同的任务例如数据的同步,或者表或视图的建立在这里插入图片描述
2、倘若有参数,例如业务日期(当前时间 - 1)需要在参数栏中手动定义
在这里插入图片描述
3、每一个节点都可以有依赖(即上下游的箭头指向)和输出(被其他节点依赖)
在这里插入图片描述
建议手动添加依赖,有时自动添加会出错
输出的时候也可能错,会导致其他节点无法依赖到这个节点,也需要检查
头部的 root 节点,应为本质没有依赖关系,可以选择工作根节点作为上游
在这里插入图片描述

4、此处是设置定时任务
在这里插入图片描述
如果要设置的话,重跑属性是默认为空的,需要手动添加


二、运维中心

被提交的周期任务会被传至运维中心
在这里插入图片描述
1、补数据
倘若数据是按照日期进行分区,此处可以按照往期的日期,进行数据的重跑
前提条件是所有的基本数据是按照天来分区,并且数据都完整存在
本质可能就是将 bizdate 按照指定日期进行业务的再加载
在这里插入图片描述在这里插入图片描述


三、数据服务

在这里插入图片描述
配置 API 接口,需要先创建
在这里插入图片描述
在这里插入图片描述
BasePath 即 URL,用于通过路径来定位
(此处会要求开通网关服务,同一一下协议即可)

1 向导模式生成 API
在这里插入图片描述
创建 API,此处无法选择 MaxCompute,因为从速度考虑,MaxCompute 并不适用这一场景,因此需要选择其他数据源
选择参数即依据怎样的条件进行查询
在这里插入图片描述
默认是等于,可以在右侧进行修改
也可以不选择请求参数,但是为了防止一次获取过多数据
需要在下面的返回参数中打开结果的分页显示,并加上三个页面相关的参数
(总页数,一页的数量,返回页)

2 脚本模式生成 API
也允许开发之使用 sql 语句来作为返回
请求参数需要写为 ${xxx}
系统会自动识别


四、连接 MaxCompute 的另两种方法

1、odpscmd 客户端

和 cmd 控制台类似
需要在下载对应的客户端
在这里插入图片描述
解压后再 conf 文件夹中配置对应参数,帮助文档中很清楚
接着可以在 bin 中打开脚本文件,打开控制台
本质是连接 MaxCompute
特点是在查询时。,会稍稍变快,尤其是在查询元数据时

2、MaxCompute Studio

需要在 IDEA 中下载对应插件,名称即为 MaxCompute Studio
接着就可以建立新的 MaxCompute Studio 项目(project)
首先依然需要连接
在这里插入图片描述
此处可以直接读取 cmd 客户端中的配置文件
连接好后,此处可以看到一些表的元数据等等
并且可以创建 MaxCompute SQL 脚本
在这里插入图片描述
内部功能和网页版的相同,可以写各种 SQL 语句


3、MaxCompute Java

创建项目时会发现还要另一个项目,MaxCompute Java
建立后,会发现内部一样有一个 pom 的插件配置文件,src 等等,类似 maven
在这里插入图片描述
之后可以向下选择不同的文件,可以满足绝大部分需求了
在这里插入图片描述
比如这里创建一个 UDF(自定义函数,一对一)
创建后会发现大框架已经被建立好,只需要按需修改对应的输入输入即可
在这里插入图片描述
写完后不需要手动打包上传,加载注册,只需要右键一键上传,写个函数名
在这里插入图片描述


五、行列转换(部分)

建表

CREATE TABLE IF NOT EXISTS test1
(
    id   STRING,
    col1 STRING,
    col2 STRING,
    col3 STRING,
    col4 STRING,
    col5 STRING,
    col6 STRING
) ;

数据

a,1,2,3,4,5,6
b,11,12,13,14,15,16
c,21,22,23,24,25,26
d,31,32,33,34,35,36

1 explode

能够将 array map struct 结构进行展开
但是只能存在展开的这一列,不能添加其他列

select 
    explode(ARRAY(col1,col2,col3,col4,col5,col6))
from test1

在这里插入图片描述

2 posexplode

能够在原本 explode 的基础上再添加一列索引,可以修改
但是依然只能存在展开的这一列,不能添加其他列

select  concat(t1.indx * 2,'点') as (hour)
        ,t1.value 
from(
 select 
     posexplode(ARRAY(col1,col2,col3,col4,col5,col6)) as(indx,value) 
 from test1
) t1;

在这里插入图片描述

3 lateral view

侧视图,类似一种 join,一个匹配一组,可以在原表的基础上匹配一个 explode

select  id
        ,concat(t1.indx * 2,'点') as (hour)
        ,value
from test1 
lateral view 
   posexplode(ARRAY(col1,col2,col3,col4,col5,col6)) t1 as indx,value;

在这里插入图片描述

4 MaxCompute 自定义函数

新建项目
在这里插入图片描述
框架已经完全写好,只需要编写:
1)注解中的输入输出类型
2)process 中的方法体

import com.aliyun.odps.udf.ExecutionContext;
import com.aliyun.odps.udf.UDFException;
import com.aliyun.odps.udf.UDTF;
import com.aliyun.odps.udf.annotation.Resolve;

// TODO define input and output types, e.g. 
// "string,string->string,bigint".
// 输入和输出的类型,左边是输入,右边是输出,*指任意个参数
@Resolve({"*->string,bigint"})
public class hangliechange extends UDTF {

    @Override
    public void setup(ExecutionContext ctx) throws UDFException {

    }
	
	// 1,2,3,4,5,6
    @Override
    public void process(Object[] args) throws UDFException {
        // TODO
        int i = 0;
        for (Object arg : args) {

            String hour = i + "时";
            long value = Long.parseLong(arg.toString());
            i += 2;

            // 不同于 hive,此处的forward可以返回多个参数
            forward(hour,value);
        }

    }

    @Override
    public void close() throws UDFException {

    }

}

一键提交
在这里插入图片描述
—— 亦可打包上传
在这里插入图片描述在这里插入图片描述
提交
在这里插入图片描述
新建函数,类似注册,依然要保存和提交
在这里插入图片描述
正常使用

select  id
        -- 注意此处不再需要concat了,函数知己返回了
        ,indx as hour
        ,value
from test1 
lateral view 
    HANGLIECHANGE(col1,col2,col3,col4,col5,col6) t1 as indx,value;

5 Function Stutio 自定义函数

类似 MaxCompute Java,先打开菜单
在这里插入图片描述
新建代码工程
在这里插入图片描述
新建项目
在这里插入图片描述
内部和 Java 完全相同,粘贴一下

再提交,就可以直接使用
在这里插入图片描述


零碎

hive 中,选择表中字段的类型,并不会将数据进行格式化
,而是怎么来怎么进去(表存储和结构无关)

带参数 ${} 的记得选择高级运行,否则参数不会被识别

运维中心中,需要点选上游节点 root,才能往下展开

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、项目简介 本项目教程以国内电商巨头实际业务应用场景为依托,同时以阿里云ECS服务器为技术支持,紧跟大数据主流场景,对接企业实际需求,对电商数仓的常见实战指标进行了详尽讲解,让你迅速成长,获取最前沿的技术经验。 二、项目架构 版本框架:Flume、DateHub、DataWorks、MaxCompute、MySql以及QuickBI等; Flume:大数据领域被广泛运用的日志采集框架; DateHub:类似于传统大数据解决方案中Kafka的角色,提供了一个数据队列功能。对于离线计算,DataHub除了供了一个缓冲的队列作用。同时由于DataHub提供了各种与其他阿里云上下游产品的对接功能,所以DataHub又扮演了一个数据的分发枢纽工作; 据上传和下载通道,提供SQL及MapReduce等多种计算分析服务,同时还提供完善的安全解决方案; DataWorks:是基于MaxCompute计算引擎,从工作室、车间到工具集都齐备的一站式大数据工厂,它能帮助你快速完成数据集成、开发、治理、服务、质量、安全等全套数据研发工作; QuickBI & DataV:专为云上用户量身打造的新一代智能BI服务平台。 三、项目场景 数仓项目广泛应用于大数据领域,该项目技术可以高度适配电商、金融、医疗、在线教育、传媒、电信、交通等各领域; 四、项目特色 本课程结合国内多家企业实际项目经验。从集群规模的确定到框架版本选型以及服务器选型,手把手教你从零开始搭建基于阿里云服务器的大数据集群。采用阿里云ECS服务器作为数据平台,搭建高可用的、高可靠的Flume数据采集通道,运用阿里云DateHub构建中间缓冲队列并担任数据分发枢纽将数据推送至阿里自主研发的DataWorks对数据进行分层处理,采用MaxCompute作为处理海量数据的方案,将计算结果保存至MySQL并结合阿里的QuickBI工作做最终数据展示。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值