无法从火花连接到红移

时间:2015-10-03 19:47:33

标签: scala apache-spark amazon-redshift

我正在尝试使用scala 2.10

从redshift读取数据到spark 1.5

我已经构建了spark-redshift包并将amazon JDBC连接器添加到项目中,但我一直收到此错误:

Exception in thread "main" java.lang.NoClassDefFoundError: com/amazonaws/auth/AWSCredentials

我已通过以下方式进行身份验证:

val hadoopConf = sc.hadoopConfiguration
hadoopConf.set("fs.s3n.impl","org.apache.hadoop.fs.s3native.NativeS3FileSystem")
hadoopConf.set("fs.s3n.awsAccessKeyId", "ACCESSKEY")
hadoopConf.set("fs.s3n.awsSecretAccessKey","SECRETACCESSKEY")

val df: DataFrame = sqlContext.read.format("com.databricks.spark.redshift")
.option("url","jdbc:redshift://AWS_SERVER:5439/warehouseuser=USER&password=PWD")
.option("dbtable", "fact_time")
.option("tempdir", "s3n://bucket/path")
.load()

df.show()

1 个答案:

答案 0 :(得分:1)

关于你的第一个错误java.lang.NoClassDefFoundError: com/amazonaws/auth/AWSCredentials我重复我在评论中所说的话: 您忘记在Spark应用程序jar中发布AWS依赖关系jar

关于第二个错误,我不确定该软件包,但它更有可能成为您需要的org.apache.httpcomponents库。 (我不知道你用它的想法!)

您可以将以下内容添加到maven依赖项中:

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpcore</artifactId>
    <version>4.4.3</version>
</dependency>

你需要组装整个。

PS:在未安装库时,您始终需要提供库。你还必须考虑到你提交的罐子的大小,因为它会损害性能。