首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS emr驱动缸

AWS emr驱动缸
EN

Stack Overflow用户
提问于 2021-02-26 14:26:43
回答 1查看 567关注 0票数 1

我正在通过以下方法尝试在pyspark笔记本上使用AWS EMR 5.29中的外部驱动程序:

代码语言:javascript
复制
#%%configure -f
{ "conf": {"spark.jars":"s3://bucket/spark-redshift_2.10-2.0.1.jar,"
                        "s3://bucket/minimal-json-0.9.5.jar,"
                        "s3://bucket/spark-avro_2.11-3.0.0.jar,"
                        "s3://bucket/RedshiftJDBC4-no-awssdk-1.2.41.1065.jar"}}

根据https://blog.benthem.io/2020/04/21/connect-aws-emr-to-spark.html

然而,当尝试

代码语言:javascript
复制
from pyspark.sql import SQLContext

sc = spark # existing SparkContext
sql_context = SQLContext(sc)

df = sql_context.read.format("com.databricks.spark.redshift")\
                                    .option("url", jdbcUrl)\
                                    .option("query","select * from test")\
                                    .option("tempdir", "s3://")\
                                    .load()

我得到: java.lang.ClassNotFoundException:未能找到数据源: com.databricks.spark.redshift。

我如何解决这个问题?我可以确认emr角色可以访问存储桶,因为我可以使用spark在同一个桶上处理CSV文件。我还可以确认所有列出的jar文件都在桶中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-26 17:26:18

实际上,解决这一问题的方法是将SSH放入主节点,然后查看常春藤日志:

/mnt/var/log/livy/livy-server.out

和下载的jar文件

/var/lib/livy/.livy 2/jars/

根据我发现的情况,我将代码更改为:

代码语言:javascript
复制
%%configure -f
{
    "conf": {
        "spark.jars" : "s3://bucket/RedshiftJDBC4-no-awssdk-1.2.41.1065.jar",
        "spark.jars.packages": "com.databricks:spark-redshift_2.10:2.0.0,org.apache.spark:spark-avro_2.11:2.4.0,com.eclipsesource.minimal-json:minimal-json:0.9.4"
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66387589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档