阿里雲數倉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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM