# 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
用Python的redshift-connector库把pyspark Dataframe写入Amazon Redshift数据库
最新推荐文章于 2024-08-15 01:55:01 发布