为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕哥6287543 2022-05-21 19:50:45
我正在尝试基于 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 文件系统。

您可以执行以下两项操作之一来解决此问题:

  1. 在您的系统中配置 AWS 凭证,以便您的代码以某种方式尝试访问 s3 存储桶。由于各种原因,我不会推荐这种方法。

  2. 将文件路径保存在配置文件中。使用 2 个配置文件 - 一个用于测试代码,另一个用于生产环境。在测试环境中,使用 c:\path\to\your\dummy\folder\ 等路径,在生产环境配置文件中使用 s3:\your_bucket_name\path\in\bucket 等路径。

希望能帮助到你。


查看完整回答
反对 回复 2022-05-21
?
一只斗牛犬

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>


查看完整回答
反对 回复 2022-05-21
  • 2 回答
  • 0 关注
  • 200 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号