无法从 spark 连接到 redshift
Unable to connect to redshift from spark
我正在尝试使用 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()
关于你的第一个错误java.lang.NoClassDefFoundError: com/amazonaws/auth/AWSCredentials
我重复我在评论中所说的话:
您忘记将 AWS 依赖项 jar 运送到您的 spark 应用程序 jar
关于第二个错误,我不确定该包,但它更有可能是您需要的 org.apache.httpcomponents 库。 (不知道你是用来干什么的!)
您可以将以下内容添加到您的 Maven 依赖项中:
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.4.3</version>
</dependency>
你需要组装整个。
PS: 如果库没有安装,您总是需要提供它们。您还必须注意提交的 jar 的大小,因为它会影响性能。
我正在尝试使用 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()
关于你的第一个错误java.lang.NoClassDefFoundError: com/amazonaws/auth/AWSCredentials
我重复我在评论中所说的话:
您忘记将 AWS 依赖项 jar 运送到您的 spark 应用程序 jar
关于第二个错误,我不确定该包,但它更有可能是您需要的 org.apache.httpcomponents 库。 (不知道你是用来干什么的!)
您可以将以下内容添加到您的 Maven 依赖项中:
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.4.3</version>
</dependency>
你需要组装整个。
PS: 如果库没有安装,您总是需要提供它们。您还必须注意提交的 jar 的大小,因为它会影响性能。