惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The Last Watchdog
The Last Watchdog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
GbyAI
GbyAI
Y
Y Combinator Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
The GitHub Blog
The GitHub Blog
博客园_首页
小众软件
小众软件
I
InfoQ
J
Java Code Geeks
月光博客
月光博客
S
Secure Thoughts
Microsoft Security Blog
Microsoft Security Blog
V
Visual Studio Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Stack Overflow Blog
Stack Overflow Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
N
News and Events Feed by Topic
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
The Cloudflare Blog
T
Threat Research - Cisco Blogs
A
About on SuperTechFans
H
Help Net Security
MongoDB | Blog
MongoDB | Blog
博客园 - 聂微东
人人都是产品经理
人人都是产品经理
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Latest news
Latest news
G
GRAHAM CLULEY
IT之家
IT之家
C
Cisco Blogs
Last Week in AI
Last Week in AI
Engineering at Meta
Engineering at Meta
L
LangChain Blog
The Register - Security
The Register - Security
SecWiki News
SecWiki News
M
MIT News - Artificial intelligence
NISL@THU
NISL@THU
T
Tenable Blog
博客园 - Franky
美团技术团队
I
Intezer
U
Unit 42
雷峰网
雷峰网
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
S
SegmentFault 最新的问题
C
Cyber Attacks, Cyber Crime and Cyber Security

博客园 - 五岳

JDK中使用的设计模式 Java的List.sort()排序方法源码理解 Cloud Agent 开发笔记(4):Skill 与 MCP 集成、项目后记 Cloud Agent 开发笔记(3):Web 交互与数据持久化 Cloud Agent 开发笔记(2):Agent 引擎与 Tool 体系 Cloud Agent 开发笔记(1):V1从跑通到放弃 单点登录系统思维导图与资料收集 阿里云DTS按业务场景批量迁移RDS MySQL表实战(下):迁移管理平台设计与实现 阿里云DTS按业务场景批量迁移RDS MySQL表实战(上):技术选型和API对接 分库分表数据源ShardingSphereDataSource的Connection元数据误用问题分析 Web层接口通用鉴权注解实践(基于JDK8) Feign框架中一处编码不合理导致的异常 解决Dify的Ollama插件添加模型时保存成功但模型为空的问题 深入研究使用DozerMapper复制List<Ojbect>前后元素类型不一致的问题 mybatis-config的mapUnderscoreToCamelCase配置生效方式和基本原理 封装CompletionService的并发任务分发器(优化版) 深入理解Mybatis分库分表执行原理 写代码被大语言模型坑之使用LocalDateTime比较两个时间差了几天 系统设计:消灭慢接口 使用LinkedList实现队列和栈 Collectors.toMap的暗坑与避免方式 如丝般顺滑:DDD再实践之类目树管理 DDD实践反思 LeetCode组合总和I~IV和背包问题小结 Akka学习笔记
阿里云数仓Dataworks数据导出到文件step by step
五岳 · 2021-06-15 · via 博客园 - 五岳

背景

假设你在阿里云上Dataworks的空间space下有一个表table_A,想要把它的数据导出到文件以供后续使用,但是数据量又很多,从浏览器复制不太现实。阿里云提供了Java和Python版本的SDK,用来完成这个操作。
为了帮助业务取数,我之前搜了很多文档包括官方文档,但都没有完整讲清楚具体怎么做的,信息很碎片化。经过个人的实践总算摸清楚其中每一步的细节,分享出来。
其实阿里内部是有一套自有的数仓导出&文件分发平台的,希望能尽早开放出来给用户使用。

“空间”所在位置(已打码):

【注意】使用SDK访问数仓表也会按流量计费,因此不要进行一些非必要的操作!

环境准备

  1. 安装python,建议用python3

    brew install python3
    
  2. 安装pip

    easy_install pip
    
  3. 安装pyodps

    pip install pyodps
    

获取AccessKey

按图中的步骤,获取AccessKeyIdAccessKeySecret注意:AccessKeySecret创建后在阿里云上是无法再次查看的,需要自行保存。

编写取数脚本

基本用法

先写一个简单的脚本,将数仓中所有的行的id列取出来,输出到文件中,请自行替换以下代码中带有"【】"的参数。
注意数据分片是必须的,请自行替换成你的表的分片字段名(默认一般是ds,格式为20210611)

from odps import ODPS
file_handle=open('export.txt',mode='w')
o = ODPS('【AccessKeyId】', '【AccessKeySecret】', '【space】','http://service.odps.aliyun.com/api')
for record in o.read_table('【table_A】', partition='ds=【数据分片】'):
	file_handle.write(record.id + '\n')
file_handle.close()

条件查询

此时使用execute_sql+reader来读取即可

from odps import ODPS
file_handle=open('export.txt',mode='w')
o = ODPS('【AccessKeyId】', '【AccessKeySecret】', '【space】','http://service.odps.aliyun.com/api')
with o.execute_sql("select * from 【table_A】 where id = '【***】' and ds='【数据分片】'").open_reader() as reader:
	for record in reader:
		file_handle.write(record.id + '\n')
file_handle.close()

参考文档

pyods官方文档:https://pyodps.readthedocs.io/zh_CN/latest/