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的主要内容,如果未能解决你的问题,请参考以下文章
在 AWS EMR 上的 PySpark 脚本上找不到 com.amazon.ws.emr.hadoop.fs.EmrFileSystem