2015-10-03 127 views
1

红移我想从红移读取数据使用Scala的2.10无法连接从火花

我已经建立了火花红移包,并添加了亚马逊的JDBC连接器项目引发1.5,但我不断收到这个错误:

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

您忘了将您的AWS依赖关系jar发送到您的spark应用程序 – eliasah

+0

谢谢,我添加了以下依赖项:aws-java-sdk-core-1.10.22,aws-java-sdk-s3-1.10.22,aws -java-SDK-STS-22年1月10日。现在我得到这个错误:java.lang.NoClassDefFoundError:org/apache/http/protocol/HttpContext –

回答

1

关于你的第一个错误java.lang.NoClassDefFoundError: com/amazonaws/auth/AWSCredentials我重复我在COMM说耳鼻喉科: 你已经忘了你的船AWS相关性JAR在你的火花应用罐子

而关于第二个错误,我不知道包的,但它更可能是org.apache.httpcomponents库需要。 (我不知道你正在使用什么它认为!)

您可以添加以下到你的Maven的依赖关系:

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

,你就需要装配整体。

PS:您将永远需要提供库时,他们没有安装。您还必须对提交的罐子大小感到满意,因为它会损害性能。

+0

谢谢,我的确加了httpclient-4.5.1和httpcore-4.4.3。现在我收到此错误:无法初始化类com.amazonaws.services.s3.internal.ServiceUtils。我没看过火花红移库是一个依赖恶梦 –

+0

是的。确实!但我不是一个红移专家。只要它停留在火花的范围内,我可以帮忙。否则,你需要为此提出新的问题,对不起! – eliasah