使用 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 作业?