基于AWS Serverless的Glue服务进行ETL(提取、转换和加载)数据分析(三)——serverless数据分析

3 serverless数据分析

大纲

  • 3 serverless数据分析
    • 3.1 创建Lambda
    • 3.2 创建API Gateway
    • 3.3 结果
    • 3.4 总结

3.1 创建Lambda

在Lambda中,我们将使用python3作为代码语言。

步骤图例
1、入口在这里插入图片描述
2、创建(我们选择使用python3.7)在这里插入图片描述
3、IAM权限(权限可信实体需要包括Lambda才能将角色绑定到Lambda上)在这里插入图片描述见下方“IAM可信实体描述”
4、指定处理函数(处理程序要为用户程序的入口)在这里插入图片描述
5、添加层(层为我们的代码运行时的环境,并且,兼容运行时要包含上一步中的运行时环境)在这里插入图片描述
6、代码(在此代码中使用了boto3来连接Athena,可自定义sql,使用方法请看官方文档)见下方“Lambda代码”

IAM可信实体描述:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "lambda.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

Lambda代码

import boto3, os, json
import pandas as pd

from pyathena import connect
import time
REGION = "us-west-2"

# expected request: anomaly/{meter_id}?data_start={}&data_end={}&outlier_only={}
def lambda_handler(event, context):
    ATHENA_OUTPUT_BUCKET = "【待替换S3桶路径】/athena"
    DB_SCHEMA = "suzikuo_test_db"

    USE_WEATHER_DATA = 0
    pathParameter = event["pathParameters"]
    queryParameter = event["queryStringParameters"]
    METER_ID = pathParameter['meter_id']
    DATA_START = queryParameter['data_start']
    DATA_END = queryParameter['data_end']
    OUTLIER_ONLY = queryParameter['outlier_only']
    query = '''
    select * from "{}".reading_type_int
    where meter_id = '{}'
    and cast(reading_date_time as timestamp) >= timestamp '{}' and cast(reading_date_time as timestamp) < timestamp '{}'
    '''.format(DB_SCHEMA, METER_ID, DATA_START, DATA_END)

    athena = boto3.client('athena')
    response = athena.start_query_execution(
    QueryString=query,
    QueryExecutionContext={
        'Database': 'suzikuo_test_db'
    },
    ResultConfiguration={
        'OutputLocation': 's3://suzikuo-test-2022-8-4-s3/athena',
        'EncryptionConfiguration': {
            'EncryptionOption': 'SSE_S3'
        }
    }
    )
    while True:
        try:
            query_results = athena.get_query_results(
                QueryExecutionId=response['QueryExecutionId']
            )
            break
        except Exception as err:
            if 'Query has not yet finished' in str(err):
                time.sleep(3)
            else:
                raise(err)

    return query_results['ResultSet']['Rows']

3.2 创建API Gateway

使用API Gateway+Lambda 可轻松实现一个serverless架构。

步骤图例
1、入口在这里插入图片描述
2、API(我们使用的是Lambda,所以选HTTP API)在这里插入图片描述
3、创建集成(指定要绑定的Lambda)在这里插入图片描述
4、配置路由(指定路由要请求的集成(lambda))在这里插入图片描述
5、一直下一步即可

3.3 结果

此案例只查询了某一ID的某个时间段内的数据
通过获取URI和参数,在Lambda中编写逻辑,可以实现我们对数据的任意操作。

在这里插入图片描述

3.4 总结

到此,我们已经完成了基于Glue ETL(提取、转换和加载)的serviceless 数据分析的全部过程了。在此案例中,我们使用到了AWS 服务中的Glue、S3、APIGateway、Lambda等服务实现了一个通过API访问的数据统计与分析接口。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/236222.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C# 数据的保存和提取(.TXT格式)

红色部分的才是最终版 一、将页面内容保存到文件中 第一步 创建Visual的Windows窗体应用,使用的是 第二步 创建几个Label控件、TextBox控件、以及Button按钮,而TextBox控件放入Panel中 第三步 先对写法进行了解,了解保存的语句 StreamWriter sw= new StreamWriter(TXT…

自定义类型详解(1)

文章目录 目录1. 结构体1.1 结构的基础知识1.2 结构的声明1.3 特殊的声明1.4 结构的自引用1.5 结构体变量的定义和初始化1.6 结构体内存对齐1.7 修改默认对齐数1.8 结构体传参 2. 位段2.1 什么是位段2.2 位段的内存分配2.3 位段的跨平台问题2.4 位段的应用 3. 枚举3.1 枚举类型…

Appium python自动化测试系列之移动自动化测试!

1.1 移动自动化测试现状 因为软件行业越来越发达&#xff0c;用户的接受度也在不断提高&#xff0c;所以对软件质量的要求也随之提高&#xff0c;当然这个也要分行业&#xff0c;但这个还是包含了大部分。因为成本、质量的变化现在对自动化测试的重视度越来越高&#xff0c;在…

mmseg上手自己的数据集

制作自己的数据集&#xff0c;VOC格式为例。 这三个文件包括数据集的名称。可以使用labelme脚本自动生成。 跟据预测类别修改配置文件 D:\projects\mmsegmentation-main\mmseg\datasets\voc.py 因为是voc格式的数据集&#xff0c;在这个文件里进行配置&#xff0c;修改成自己数…

保研毕业论文查重率多少通过【保姆教程】

大家好&#xff0c;今天来聊聊保研毕业论文查重率多少通过&#xff0c;希望能给大家提供一点参考。 以下是针对论文重复率高的情况&#xff0c;提供一些修改建议和技巧&#xff1a; 保研毕业论文查重率多少通过 在保研过程中&#xff0c;毕业论文的查重率是衡量学术诚信和论文…

微信社群机器人开发

简要描述&#xff1a; 删除朋友圈 请求URL&#xff1a; http://域名地址/deleteSns 请求方式&#xff1a; POST 请求头Headers&#xff1a; Content-Type&#xff1a;application/jsonAuthorization&#xff1a;login接口返回 参数&#xff1a; 参数名必选类型说明wId…

AMEYA360--罗姆与Quanmatic公司利用量子技术优化制造工序并完成验证

全球知名半导体制造商罗姆(总部位于日本京都市)于2023年1月起与 Quanmatic Inc.(总部位于日本东京都新宿区&#xff0c;以下简称“Quanmatic”)展开合作&#xff0c;在半导体制造工序之一的EDS工序中测试并引入量子技术&#xff0c;以优化制造工序中的组合。目前&#xff0c;双…

ip ssl证书怎么更换ip地址

ip ssl证书是一种数字证书&#xff0c;为只有公网ip地址的站点建立安全、加密的通信通道。它通常由权威的证书颁发机构&#xff08;CA&#xff09;颁发&#xff0c;并用于验证网站的身份和安全性。ip ssl证书的主要目的是保护敏感信息&#xff0c;如信用卡号、用户名和密码等&a…

15:00面试,15:06就出来了,问的问题太变态了。。

刚从小厂出来&#xff0c;没想到在另一家公司我又寄了。 在这家公司上班&#xff0c;每天都要加班&#xff0c;但看在钱给的比较多的份上&#xff0c;也就不太计较了。但万万没想到5月一纸通知&#xff0c;所有人不准加班了&#xff0c;不仅加班费没有了&#xff0c;薪资还要降…

【Python网络爬虫入门教程3】成为“Spider Man”的第三课:从requests到scrapy、爬取目标网站

Python 网络爬虫入门&#xff1a;Spider man的第三课 写在最前面从requests到scrapy利用scrapy爬取目标网站更多内容 结语 写在最前面 有位粉丝希望学习网络爬虫的实战技巧&#xff0c;想尝试搭建自己的爬虫环境&#xff0c;从网上抓取数据。 前面有写一篇博客分享&#xff0…

如何使用iPhone15在办公室远程观看家里群晖nas上的4k电影?

文章目录 1.使用环境要求&#xff1a;2.下载群晖Video Station&#xff1a;3.公网访问本地群晖Video Station中的电影&#xff1a;4.公网条件下使用电脑浏览器访问本地群晖video station5.公网条件下使用移动端&#xff08;搭载安卓&#xff0c;ios&#xff0c;ipados等系统的设…

Java并发(十七)----变量的线程安全分析

1、成员变量和静态变量是否线程安全 如果它们没有共享&#xff0c;则线程安全 如果它们被共享了&#xff0c;根据它们的状态是否能够改变&#xff0c;又分两种情况 如果只有读操作&#xff0c;则线程安全 如果有读写操作&#xff0c;则这段代码是临界区&#xff0c;需要考虑线…

深信服AF设置安全防护策略

以百度为例&#xff0c;禁止内网用户访问www.baidu.com 1、对象→安全策略模板→新增 2、名称自定义&#xff0c;安全配置只选择url过滤 3、点击图标→新增→设置名称及url 勾选刚刚新增的url--deny→确定 4、高级选项→确定 5、策略→安全策略→安全防护策略→新增用户防护策略…

unity 3分钟 制作粒子爆炸效果 可以用在三消消除等

思路就是&#xff1a; 有一个对象池&#xff0c;管理各种特效。 当需要播放特效时&#xff0c;触发如下代码&#xff1a; blocker为粒子生成的位置 var particles gamePools.iceParticlesPool.GetObject(); if (particles ! null) {particles.transform.position blocker…

如何通过内网穿透工具实现任意浏览器远程访问Linux本地zabbix web管理界面

前言 Zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。能监视各种网络参数&#xff0c;保证服务器系统的安全运营&#xff1b;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。 本地zabbix web管理界面限制在只能局域…

一文带你全面了解In App Bidding竞价变现 | TOPON变现干货

2021年&#xff0c;伴随着Facebook、Admob、Pangle、腾讯优量汇等国内外头部广告平台Bidding的正式推出及全面推广&#xff0c;APP广告变现正式步入bidding竞价时代。早在2020年&#xff0c;TopOn便已推出Header Bidding头部竞价功能&#xff0c;彼时主流的广告变现依然是以Wat…

集合的几个遍历方法

1. 集合的遍历 1.0 创建集合代码 List<String> strList new ArrayList<>(); strList.add("huawei"); strList.add("xiaomi"); strList.add("tencent"); strList.add("google"); strList.add("baidu");1.1 fo…

OpenCV-Python:DevCloud CodeLab介绍及学习

1.Opencv-Python演示环境 windows10 X64 企业版系统python 3.6.5 X64OpenCV-Python 3.4.2.16本地PyCharm IDE线上注册intel账号&#xff0c;使用DevCloud CodeLab 平台 2.DevCloud CodeLab是什么&#xff1f; DevCloud是一个基于云端的开发平台&#xff0c;提供了强大的计算…

dcat admin多后台和自定义登录

多后台按照教程配置 https://learnku.com/docs/dcat-admin/2.x/multi-application-multi-background/8475 自定义登录 我的新后台的登录需要另外一个用户表&#xff0c;所以原来的逻辑要修改一下。 1、首先是模板修改 参考连接 https://learnku.com/docs/dcat-admin/2.x/ba…

我有才打造专属个人或企业知识付费平台,核心功能设计

在当今信息爆炸的时代&#xff0c;知识管理已经成为了每个人必须面对的问题。然而&#xff0c;市面上的知识付费平台大多数都是通用的&#xff0c;无法满足个性化需求。 因此&#xff0c;我有才提供了一款专属定制的适合个人的知识付费平台。核心产品能力如下&#xff1a; 一…