阿里云数仓Dataworks数据导出到文件step by step

背景

假设你在阿里云上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/

posted @   五岳  阅读(1789)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2017-06-15 面向对象的SOLID原则白话篇
回到顶部
点击右上角即可分享
微信分享提示