我正在尝试基于 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>
2 回答

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

一只斗牛犬
TA贡献1784条经验 获得超2个赞
我想您忘记将hadoop-aws包包含到您的项目中。这个包将允许您使用s3://模式
<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-aws -->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-aws</artifactId>
<version>2.6.0</version>
</dependency>
添加回答
举报
0/150
提交
取消