用Python的redshift-connector库把pyspark Dataframe写入Amazon Redshift数据库

# pip install pyspark pandas redshift-connector

from pyspark.sql import SparkSession
import pandas as pd
import redshift_connector

# 初始化Spark会话
spark = SparkSession.builder.appName("WriteToRedshift").getOrCreate()

# 假设你有一个PySpark DataFrame
# 这里我们只是创建一个示例DataFrame
data = [("John", 30), ("Jane", 25), ("Doe", 35)]
df = spark.createDataFrame(data, ["name", "age"])

# 因为我们在这里使用Pandas,所以我们只取一小部分数据
# 在真实场景中,你可能需要分区处理大数据集
pandas_df = df.limit(100).toPandas()  # 只取前100行作为示例

# Redshift连接参数
config = {
    'host': 'your_redshift_host.us-east-1.redshift.amazonaws.com',
    'port': 5439,
    'user': 'your_username',
    'password': 'your_password',
    'database': 'your_database'
}

# 使用redshift-connector连接到Redshift
conn = redshift_connector.connect(
    host=config['host'],
    port=config['port'],
    user=config['user'],
    password=config['password'],
    dbname=config['database']
)

# 使用pandas的to_sql方法(但注意:pandas的to_sql默认不使用redshift-connector)
# 所以我们需要手动使用SQLAlchemy或其他方法来插入数据
# 这里只是展示连接过程,真正的插入逻辑需要另外编写

# 关闭连接
conn.close()

# 注意:上面的代码没有真正插入数据到Redshift
# 你需要编写一个循环或使用其他方法(如SQLAlchemy的executemany)来插入数据

# 对于大数据集,你应该使用PySpark的JDBC或ODBC连接器来直接写入Redshift


  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值