阿里MAXCOMPUTE数据专辑信息读取并同步数据表
阿里MAXCOMPUTE数据专辑信息读取并同步数据表
在阿里云大数据体系中,我们可以使用数据地图的数据专辑,对数据的类别等进行一个管理
那么管理后的数据,我们想要落表进行相关的数据分析,如何做呢?
查看阿里云官方文档可以知道,我们可以通过阿里云OpenAPI取得专辑和对应的数据表信息,之后将结果落入MaxCompute中
Code
"""
@author:Biglucky
@date:2024-07-26请求专辑信息并且写入到ODPS中参数:1、一组阿里云账号和需要访问的endpointALIBABA_CLOUD_ACCESS_KEY_ID :key信息ALIBABA_CLOUD_ACCESS_KEY_SECRET :secret信息ALIBABA_CLOUD_ENDPOINT :阿里云开放API endpointODPS_ENDPOINT :Maxcompute的endpoint2、一个ODPS表,用于存储album信息TABLE_PROJECT :MAXCOMPUTE的空间名称TABLE_NAME :MAXCOMPUTE的表名称创建好的table 包含列为:{ album_id string ,album_name string 专辑名称,entity_type string 类型,entity_name string 表名称,project_name string 项目名称,add_album_time string 数据表添加到转机时间}3、安装好相关的包STEPS:1、读取阿里云开放API的album信息2、读取album下的存放在DataFrame对象信息3、将数据入到ODPS中"""import sys
from alibabacloud_tea_openapi.client import Client as OpenApiClient
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_openapi_util.client import Client as OpenApiUtilClient
import pandas as pd
from odps import ODPS
from odps.df import DataFrame# 配置信息:海外公共组账号
ALIBABA_CLOUD_ACCESS_KEY_ID = "你的KEY"
ALIBABA_CLOUD_ACCESS_KEY_SECRET ="你的SECRET"
ALIBABA_CLOUD_ENDPOINT = "开放API的endpoint" # https://next.api.aliyun.com/product/dataworks-public 进行查询# OUTPUT TABLE
TABLE_NAME = "你的存储Table"
TABLE_PROJECT = "你的空间名称"
ODPS_ENDPOINT = "MaxCompute endpoint信息" #http://service.ap-southeast-1.maxcompute.aliyun.com/apidef album_list(client):"""功能:传入一个阿里client,读取album信息,并且用df格式化返回client : OpenApiClientreturn df: DataFrame"""#配置接口param参数params = open_api_models.Params(# API Name,action='ListMetaCollections',# API Version,version='2020-05-18',# Protocol,protocol='HTTPS',# HTTP Method,method='POST',auth_type='AK',style='RPC',# API PATH,pathname=f'/',# Request body content format,req_body_type='json',# Response body content format,body_type='json')queries = {}queries['CollectionType'] = 'ALBUM' #请求类型是数据专辑queries['PageSize']= '100' runtime = util_models.RuntimeOptions()request = open_api_models.OpenApiRequest(query=OpenApiUtilClient.query(queries))result = client.call_api(params, request, runtime)df = pd.DataFrame.from_records( result["body"]["Data"]["CollectionList"]) #将专辑id整合成DataFrame之后进行返回return dfdef album_detail (album_id,client):"""function:requst for the table list of the album by album idrequest param:* album_id : the id number of the album* client : the client of the openAPIreturn:total_list : DataFrame the table list of the album(album id)"""params = open_api_models.Params(# API Name,action='ListMetaCollectionEntities',# API Version,version='2020-05-18',# Protocol,protocol='HTTPS',# HTTP Method,method='POST',auth_type='AK',style='RPC',# API PATH,pathname=f'/',# Request body content format,req_body_type='json',# Response body content format,body_type='json')queries = {}queries['CollectionQualifiedName'] = album_id #CollectionQualifiedName is the album idqueries['PageSize'] = 50for i in range(0,300,50):queries['NextToken'] = iruntime = util_models.RuntimeOptions()request = open_api_models.OpenApiRequest(query=OpenApiUtilClient.query(queries))result = client.call_api(params, request, runtime)df = pd.DataFrame.from_records( result["body"]["Data"]["EntityList"]) # get the table list of the album(album id)if i == 0 :total_list = df elif (len(df)==0) :breakelse : total_list = pd.concat([total_list,df],ignore_index = True)return total_listdef __main__():#STEP 1 initialize client instance config = open_api_models.Config(access_key_id = ALIBABA_CLOUD_ACCESS_KEY_ID,access_key_secret = ALIBABA_CLOUD_ACCESS_KEY_SECRET)config.endpoint = ALIBABA_CLOUD_ENDPOINTclient = OpenApiClient(config)#STEP 2 get the whole album numbersdf_album = album_list(client)albums = df_album[["QualifiedName","Name"]]#STEP 3 requst each album by album id to get the table list and table namealbums_tables = pd.DataFrame() for i in range(0,len(albums)):album_id = albums.iloc[i,0]album_name = albums.iloc[i,1]album_detail_tables = album_detail(album_id,client) album_detail_tables["album_id"] = album_idalbum_detail_tables["album_name"] = album_name#concat the whole informationalbums_tables = pd.concat([albums_tables,album_detail_tables[["album_id","album_name","EntityContent","QualifiedName"]]],ignore_index=True)#STEP 4 format the dataframealbums_tables["entity_type"] = albums_tables["EntityContent"].apply(lambda x: x["entityType"])albums_tables["entity_name"] = albums_tables["EntityContent"].apply(lambda x: x["name"])albums_tables["project_name"] = albums_tables["EntityContent"].apply(lambda x: x["projectName"])albums_tables["add_album_time"] = albums_tables["EntityContent"].apply(lambda x: x["addToCollectionTimestamp"])albums_tables = albums_tables.drop(columns = ["EntityContent","QualifiedName"])#STEP 5 insert the data into odps table o = ODPS(access_id=ALIBABA_CLOUD_ACCESS_KEY_ID,secret_access_key=ALIBABA_CLOUD_ACCESS_KEY_SECRET,project = TABLE_PROJECT,endpoint = ODPS_ENDPOINT)odps_df = DataFrame(albums_tables)pt = 'ds=' + args['YYYY-MM-DD'] # read the dataworks params odps_df.persist(name=TABLE_NAME,partition=pt,odps=o,create_partition=True)#run
__main__()
Reference
- 阿里云,ListMetaCollections - 查询集合信息
https://help.aliyun.com/zh/dataworks/developer-reference/api-dataworks-public-2020-05-18-listmetacollections?spm=a2c4g.11186623.0.0.7acc43f9jyudaO
-
阿里云,ListMetaCollectionEntities - 查询集合中的实体
https://help.aliyun.com/zh/dataworks/developer-reference/api-dataworks-public-2020-05-18-listmetacollectionentities?spm=a2c4g.11186623.0.0.663143f9J7Ywoe
相关文章:

阿里MAXCOMPUTE数据专辑信息读取并同步数据表
阿里MAXCOMPUTE数据专辑信息读取并同步数据表 在阿里云大数据体系中,我们可以使用数据地图的数据专辑,对数据的类别等进行一个管理 那么管理后的数据,我们想要落表进行相关的数据分析,如何做呢? 查看阿里云官方文档…...

rufus制作ubantu的U盘安装介质时,rufus界面上的分区类型选什么?
rufus制作ubantu的U盘安装介质时,rufus软件界面上的分区类型选什么(如下图)? 在使用Rufus制作Ubuntu的U盘安装介质时,分区类型的选择取决于我们的计算机的引导方式。 以下是具体的选择建议: 1、查看计算机的引导方式…...

【系统架构设计师-2018年】案例分析-答案及详解
试题一(25分) 阅读以下关于软件系统设计的叙述,在答题纸上回答问题1至问题3。 【说明】 某文化产业集团委托软件公司开发一套文化用品商城系统,业务涉及文化用品销售、定制、竞拍和点评等板块,以提升商城的信息化建设…...
linux驱动入门实验班——平台总线设备驱动模型和设备树
目录 前言 一、重要结构体 二、编程思路 1.platform_driver结构体 2.probe 三、使用设备树 1.步进电机 2.红外遥控 四、代码示例 前言 在这里主要记录学习韦东山老师Linux驱动人入门实验班的笔记,韦东山老师的驱动课程讲的非常好,想要学习驱动…...

零基础学习Python(六)
1. 元类的应用 使用元类给对象添加一个固有属性author: 对类名进行限定,要求类名必须是大写字母开头: class MetaC(type):def __init__(cls, name, bases, attrs):if not name.istitle():raise TypeError("类名必须是大写字母开头~")return …...

微信小程序--31(todolist案例)
一.功能 输入待办事件添加代办事件删除代办事件 二、步骤 1.添加输入框 .wxml代码: <!-- 1.输入框 --><input type"text" bindinput"handleInput" value"{{text}}" /> .wxss代码: /* 1.输入框样式 */ i…...
springboot项目使用本地依赖项,打包后出现NoClassDefFoundError的一种解决方法
可以把本地依赖项上传到本地仓库后再引用 建立 Maven 本地仓库并将依赖上传到本地仓库 要建立 Maven 本地仓库并将依赖上传到本地仓库,可以按照以下步骤进行操作: 1. 配置 Maven 本地仓库路径 Maven 默认会在用户的主目录下的 .m2/repository 目录创…...

Maven高级使用指南
在开发大型项目时,Maven作为一个强大的构建和项目管理工具,能显著提升项目管理和构建的效率。然而,随着项目的扩大,维护和管理的复杂性也随之增加。本文将探讨一些高级的Maven用法和解决方案,以帮助你更好地管理大型项…...
windows docker 执行apt-get 权限问题
今天在windows下安装的docker 部署的容器执行apt-get遇到权限问题 PS C:\Users\xiaok> docker exec -it jenkins sh $ apt-get update Reading package lists... Done E: Could not open lock file /var/lib/apt/lists/lock - open (13: Permission denied) E: Unable to l…...

Linux系统信息排查
目录 介绍步骤 介绍 1、熟悉查看CPU信息、操作系统信息、用户信息、特殊权限账户、启动项和任务计划的排查命令 2、在进行受害主机排查时,首先要对主机系统进行基本排查,方便对受害主机有一个初步的了解。 3、利用lscpu和uname -a查看系统硬件软件基本…...

《图解设计模式》笔记(四)分开考虑
九、Bridge模式:将类的功能层次结构与实现层次结构分离 类的两个层次结构和作用 类的功能层次结构:希望增加新功能时 父类有基本功能,在子类中增加新功能 Something父类 …├─SomethingGood子类 想要再增加新功能 Something父类 …├─So…...

Linux shell编程学习笔记74:sed命令——沧海横流任我行(中)
0 前言 自 60 年代末以来,sed 一直是 Unix 标准工具箱的一部分。 Sed在以下三种情况下特别有用: 编辑太大的文件,无法进行舒适的交互式编辑; 当编辑命令序列过于复杂而无法在交互模式下轻松键入时,可以编辑任何大小的…...

[数据集][目标检测]道路积水检测数据集VOC+YOLO格式2699张1类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2699 标注数量(xml文件个数):2699 标注数量(txt文件个数):2699 标注…...

不同路径
不同路径 思路: 法一:动态规划 const int N 110; class Solution { int dp[N][N];//dp[i][j]:从起点走到 i j的路径个数。 public:int uniquePaths(int m, int n) {for(int i1;i<n;i){dp[1][i]1;} for(int i1;i<m;i) dp[i][1]1;f…...

【HTML】HTML学习之引入CSS样式表
1、CSS样式规则 选择器{属性1:属性值1; 属性2:属性值2; 属性3:属性值3;}2、HTML引入CSS样式表 2.1、行内式 行内式也称为内联样式,是通过标签的style属性来设置元素的样式,其基本语法格式如下: <标签名 style"属性1:属性值1; 属性2:属性值2;…...

shaushaushau1
CVE-2023-7130 靶标介绍: College Notes Gallery 2.0 允许通过“/notes/login.php”中的参数‘user’进行 SQL 注入。利用这个问题可能会使攻击者有机会破坏应用程序,访问或修改数据. 已经告诉你在哪里存在sql注入了,一般上来应该先目录扫…...

揭秘面试必备:高频算法与面试题全面解析
干货分享,感谢您的阅读! (暂存篇---后续会删除,完整版和持续更新见高频面试题基本总结回顾(含笔试高频算法整理)) 备注:引用请标注出处,同时存在的问题请在相关博客留言…...
设计模式-visit模式-在语法树的实践
文章目录 背景示例代码分析灵活性双重分派 总结 背景 很多项目代码有accept()用法,在calcite 里也看到了这种,深入了解一下 语法树遍历:编译器通常会将源代码解析成抽象语法树(AST)。为了实现不同的编译阶段ÿ…...

ZK-Rollups测评
1. 引言 Matter Labs团队和多个高校研究人员一起,发布2024年论文《Analyzing and Benchmarking ZK-Rollups》,开源代码见: https://github.com/StefanosChaliasos/zkrollup-benchmarking(Python) 其中: …...
redis生产使用场景(一):并行流+二级缓存
本文主要介绍 redis 缓存在线上的使用场景 由于业务的特殊性,在生产库用户表中,大概有 50 多万的测试用户,在真实业务计算中,要把测试用户给筛选掉,所以在计算前,需要把测试用户加载到 redis 缓存中&#x…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...
虚拟电厂发展三大趋势:市场化、技术主导、车网互联
市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦࿰…...

手机平板能效生态设计指令EU 2023/1670标准解读
手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读,综合法规核心要求、最新修正及企业合规要点: 一、法规背景与目标 生效与强制时间 发布于2023年8月31日(OJ公报&…...

如何应对敏捷转型中的团队阻力
应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中,明确沟通敏捷转型目的尤为关键,团队成员只有清晰理解转型背后的原因和利益,才能降低对变化的…...
ubuntu22.04 安装docker 和docker-compose
首先你要确保没有docker环境或者使用命令删掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安装docker 更新软件环境 sudo apt update sudo apt upgrade下载docker依赖和GPG 密钥 # 依赖 apt-get install ca-certificates curl gnupg lsb-rel…...
[特殊字符] 手撸 Redis 互斥锁那些坑
📖 手撸 Redis 互斥锁那些坑 最近搞业务遇到高并发下同一个 key 的互斥操作,想实现分布式环境下的互斥锁。于是私下顺手手撸了个基于 Redis 的简单互斥锁,也顺便跟 Redisson 的 RLock 机制对比了下,记录一波,别踩我踩过…...