如何从redshift在python中更快地处理数据?

yvgpqqbh  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(601)

我对Python还不熟悉。。我的数据是红移的,我想用python更快地处理数据。我之所以使用python,是因为我想运行各种算法,并对这些数据进行各种计算,而这在红移中是不可能的。我看过教程,但每次加载python都要花太多时间。这是我的密码:

import psycopg2

con=psycopg2.connect(dbname = "xxxx", host="redshifttest-icp.cooqucvshoum.us-west-2.redshift.amazonaws.com", port= "5439", user="xxxx", password= "xxxx")
cur = con.cursor()

a = "select * from xxxx ;"

import pandas as pd
df = pd.read_sql(a,con)
df = df.fillna(0)
df2=df2.fillna(0)

这是非常好的工作,但我想要一些方法,可以帮助我更快地处理数据。。有人能帮我吗?

ma8fv8wu

ma8fv8wu1#

如果要从redshift中检索大量行(超过大约10000行),最快的方法是使用unload命令将它们作为csv直接提取到s3。然后可以检索提取并在python中操作它。
如果您正在处理一个更大的数字(数百万),那么我怀疑您将受到python速度的限制。在这种情况下,我建议使用spark/pyspark和spark redshift包。spark将在后台为您执行卸载,您的Dataframe计算可以通过spark跨服务器集群并行化。


# Read data from a query

df = spark.read \
  .format("com.databricks.spark.redshift") \
  .option("url", "jdbc:redshift://redshifthost:5439/database?user=username&password=pass") \
  .option("query", "select x, count(*) my_table group by x") \
  .option("tempdir", "s3n://path/for/temp/data") \
  .load()

相关问题