Python 如何連線並操作 AWS 上 PB 級雲資料倉儲 Redshift

yxhsea發表於2019-06-12

一、簡介

Amazon Redshift 是一個快速、可擴充套件的資料倉儲,可以簡單、經濟高效地分析資料倉儲和資料湖中的所有資料。
Redshift 通過在高效能磁碟上使用 Machine Learning、大規模並行查詢執行和列式儲存可提供比其他資料倉儲快十倍的效能。
您可以在幾分鐘內設定和部署新的資料倉儲,並在 Redshift 資料倉儲中對 PB 級資料,以及對在 Amazon S3 上構建的資料湖中的 EB 級資料執行查詢。

二、連線 RedShift

這裡使用的是 postgres 的驅動,原因是:redshift 資料倉儲是 aws 基於 postgres 二次開發的衍生產品。

注:這裡需要用到 orator 庫,可以執行命令 pip3 install orator 安裝。

from orator import DatabaseManager

config = {
    'postgres': {
        'driver': 'postgres',
        'host': 'xxxxxx-cluster.xxxxx.xxxx.redshift.amazonaws.com',
        'port': '5439',
        'database': 'db_name',
        'user': 'root',
        'password': 'root',
        'prefix': '',
        'log_queries': true
    }
}

db = DatabaseManager(config)

三、基本操作

這裡主要介紹最基本的增刪改查操作,想要了解更高階的操作可以檢視官方文件:傳送門

# 查詢
row = db.table('users').first()

# 新增
db.table('users').insert({
    'email': 'foo@bar.com',
    'votes': 0
})

# 更新
db.table('users').where('id', 1).update({'votes': 1})

# 刪除
db.table('users').where('age', '<', 25).delete()

四、相關文件

五、總結

因為 aws 官方只提供了 JDBC Drvier, 所以就在網上搜尋連線 RedShiftPython driver,但是 一直沒有找到比較好用的 Drvier。偶然一次在 Aws 的官方文件瞭解到 RedShift 是基於 postgres 二次開發的衍生產品,所以就嘗試用 postgres driver,結果還真連線上來。 這樣就可以像操作 postgresmysql 一樣操作 RedShift

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章