使用 Pyspark 在 redshift 上执行查询

Posted

技术标签:

【中文标题】使用 Pyspark 在 redshift 上执行查询【英文标题】:Execute queries on redshift using Pyspark 【发布时间】:2021-07-29 05:36:10 【问题描述】:

你们中的任何人都可以建议使用 pyspark 对 redshift 表执行查询的方法吗?

【问题讨论】:

这可能会有所帮助 - ***.com/questions/31395743/… 这能回答你的问题吗? How to connect to Amazon Redshift or other DB's in Apache Spark? 【参考方案1】:

使用 pyspark 数据帧选项是读取/写入 Redshift 表的一种选择。在数据框的帮助下执行查询仅限于使用preactions/postactions 方法。 如果需要执行多个查询,一种方法是使用psycopg2 模块。 首先,您需要在您的服务器上安装 psycopg2 模块:sudo python -m pip install psycopg2 然后打开 pyspark shell 并执行以下命令:

import psycopg2

conn='db_name': 'hostname':'redshift_host_url','database':'database_on_redshift','username':'redshift_username','password':'p', 'port':your_port 

db='db_name'

hostname, username, password, database, portnumber = conn[db]['hostname'], conn[db]['username'], conn[db]['password'], conn[db]['database'], conn[db]['port']

con = psycopg2.connect( host=hostname, port=portnumber, user=username, password=password, dbname=database)

query="insert into sample_table select * from table1"
cur = con.cursor()
rs = cur.execute(query)
con.commit()
con.close()

您也可以参考:https://www.psycopg.org/docs/usage.html

【讨论】:

以上是关于使用 Pyspark 在 redshift 上执行查询的主要内容,如果未能解决你的问题,请参考以下文章

PySpark 使用“覆盖”模式保存到 Redshift 表会导致删除表?

在结构化流 API (pyspark) 中使用 redshift 作为 readStream 的 JDBC 源

您如何使用 boto3(或其他方式)在 emr 上自动化 pyspark 作业?

Pyspark - 配置 Amazon Redshift JDBC jar

以追加模式写入pyspark中的红移

如何从本地安装的 spark 连接到 aws-redshift?