Pyspark - 配置 Amazon Redshift JDBC jar

Posted

技术标签:

【中文标题】Pyspark - 配置 Amazon Redshift JDBC jar【英文标题】:Pyspark - configure Amazon Redshift JDBC jar 【发布时间】:2017-01-17 16:50:59 【问题描述】:

我正在尝试使用 spark-redshift databricks 包,但无法使 Redshift jdbc 驱动程序正常工作。我已经从here 下载了最新版本并保存到 s3 存储桶中。

这就是我启动spark-shell的方式

MASTER=yarn-client IPYTHON=1 PYSPARK_PYTHON=/usr/bin/python27 /usr/lib/spark/bin/pyspark 
--packages com.databricks:spark-avro_2.10:2.0.1,com.databricks:spark-redshift_2.10:1.1.0 
--jars 's3://pathto/RedshiftJDBC42-1.2.1.1001.jar'      

我正在尝试按照 databricks 自述文件从 Redshift 中读取数据

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

但我得到一个配置错误:

 Py4JJavaError: An error occurred while calling o46.load.
 : java.lang.ClassNotFoundException: Could not load an Amazon Redshift JDBC driver; see the README for instructions on downloading and configuring the official Amazon driver.

jar 文件似乎已被读取,因此不确定如何以不同方式指定它。

【问题讨论】:

【参考方案1】:

当我意识到我做错了什么时才更新这个。我在 s3 存储桶中引用了 jar 文件,但这需要在集群本地可用。

aws s3 cp s3://pathto/RedshiftJDBC42-1.2.1.1001.jar /tmp/

【讨论】:

我也在尝试做同样的事情,但出现依赖未解决错误,您是否安装了任何软件包或进行了任何配置更改以运行。

以上是关于Pyspark - 配置 Amazon Redshift JDBC jar的主要内容,如果未能解决你的问题,请参考以下文章

Amazon EMR:Pyspark 有奇怪的依赖问题

使用 pySpark 连接 Amazon s3 时出现问题

使用 PySpark 从 Amazon S3 读取文本文件

在 AWS EMR 上的 PySpark 脚本上找不到 com.amazon.ws.emr.hadoop.fs.EmrFileSystem

尝试为在 Amazon EMR 上运行的 Pyspark 安装 pandas

通过 pyspark 加载文件名中包含冒号的 Amazon S3 文件