无法使用 java 中的 spark-redshift 库连接到 S3

我正在尝试基于 spark 数据集在 Redshift 中创建一个表。我在 jdbc 中使用 spark-redshift 驱动程序在本地实现这一点。执行此操作的代码片段


data.write()

.format("com.databricks.spark.redshift")

.option("url", "jdbc:redshift://..")

.option("dbtable", "test_table")

.option("tempdir", "s3://temp")

.option("aws_iam_role", "arn:aws:iam::..")

.option("extracopyoptions", "region 'us-west-1'")

.mode(SaveMode.Append).save();

我的 maven pom.xml 具有以下依赖项:


<dependency>

   <groupId>com.databricks</groupId>

   <artifactId>spark-redshift_2.11</artifactId>

   <version>2.0.1</version>

</dependency>


慕哥6287543
浏览 201回答 2
2回答

MM们

由于您试图在本地系统上执行此代码,因此您的代码将不知道如何访问 s3 文件系统。您可以执行以下两项操作之一来解决此问题:在您的系统中配置 AWS 凭证,以便您的代码以某种方式尝试访问 s3 存储桶。由于各种原因,我不会推荐这种方法。将文件路径保存在配置文件中。使用 2 个配置文件 - 一个用于测试代码,另一个用于生产环境。在测试环境中,使用 c:\path\to\your\dummy\folder\ 等路径,在生产环境配置文件中使用 s3:\your_bucket_name\path\in\bucket 等路径。希望能帮助到你。

一只斗牛犬

我想您忘记将hadoop-aws包包含到您的项目中。这个包将允许您使用s3://模式<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-aws --><dependency>&nbsp; &nbsp; <groupId>org.apache.hadoop</groupId>&nbsp; &nbsp; <artifactId>hadoop-aws</artifactId>&nbsp; &nbsp; <version>2.6.0</version></dependency>
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java