我正在嘗試基于 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
提交
取消