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

阿里云数仓Dataworks数据导出到文件step by step从阿里云数仓表中导出数据的详细步骤

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

背景

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

“空间”所在位置(已打码):
阿里云数仓Dataworks数据导出到文件step by step

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

环境准备

  1. 安装python,建议用python3

    brew install python3
    
  2. 安装pip

    easy_install pip
    
  3. 安装pyodps

    pip install pyodps
    

获取AccessKey

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

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

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

编写取数脚本

基本用法

先写一个简单的脚本,将数仓中所有的行的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 + "
")
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 + "
")
file_handle.close()

参考文档

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/6106.html

(0)
上一篇 2023-04-17
下一篇 2023-04-17

相关推荐

  • 利用Python exec()实现动态代码执行

    利用Python exec()实现动态代码执行在Python中,动态代码特指用字符串、元组、列表、字典等对象表示的代码。Python中有两种实现动态代码的方式:eval()和exec();前者是计算表达式的值,后者是执行字符串中的代码。

    2024-08-08
    17
  • sqlserver驱动配置_sql server显示无法连接

    sqlserver驱动配置_sql server显示无法连接当我们在调试Archery的时候,连接SQL Server 会报错,而MySQL部分没有问题。报错信息如下: Error: ('01000', "[01000] [unixO

    2023-05-22
    124
  • mysql8.0主从_mysql主从搭建

    mysql8.0主从_mysql主从搭建主从原理 master服务器将数据的改变记录二进制binlog日志,当master上的数据发生改变时,则将其改变写入二进制日志中;slave服务器会在一定时间间隔内对master二进制日志进行探测其是

    2023-06-11
    143
  • 深入了解Python字典的值(Value)用法和技巧

    深入了解Python字典的值(Value)用法和技巧在Python中,字典是一种非常常用的数据类型。它是由若干个键值对组成的无序集合。字典中每个键都唯一对应一个值,这个值可以是任意的Python对象,如数字、字符串、列表、甚至是其他字典。字典的值(Value)作为字典中的数据元素之一,其操作和使用方法非常重要。

    2024-04-08
    61
  • Python中心逆序

    Python中心逆序作为一门高效、易学易用的编程语言,Python一直备受热爱。然而,有时候人们亦需要把视线放到不那么普遍的方向上。在本文中,我们将探究Python中的一些反常现象,称之为“Python中心逆序”。通过分析这些现象,我们可以更深入地了解Python语言,从而可以更好地利用Python这个工具。

    2024-04-20
    59
  • mysql 8.0.23_dns list

    mysql 8.0.23_dns list本文转载自mysqlplayer,作者洪斌 MySQL Router是InnoDB Cluster架构的访问入口,在架构部署上,官方给出的建议是router与应用端绑定部署,避免router单点问题…

    2023-01-29
    142
  • mysql锁表原因及如何处理_判定表的优化

    mysql锁表原因及如何处理_判定表的优化1.MySQL锁概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源 (如 CPU、RAM、I/O 等)的抢占以外,数据也是一种供许多用户共享的资源。如何保证数 据并

    2023-04-10
    132
  • Python程序员的必备技能:通过Python获取当前时间

    Python程序员的必备技能:通过Python获取当前时间在我们日常的开发工作中,获取当前时间是一个常见的需求。Python提供了丰富的时间处理库,使得我们可以轻松地获取当前时间并对时间进行处理。Python中可以使用time库和datetime库来进行时间处理。其中,time库是基于C语言实现的,提供了各种与时间相关的函数;datetime库是基于time库的封装,提供更加便捷的时间处理方法。下面将会分别介绍这两个库的使用。

    2024-02-02
    123

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注