要使用本地 Spark 从 S3 读取和写入 parquet 文件,您需要在 sbt 项目中添加以下 2 个依赖项-
"com.amazonaws" % "aws-java-sdk" % "1.7.4"
"org.apache.hadoop" % "hadoop-aws" % "2.7.3"
我假设它是一个sbt 项目。如果是mvn,则添加以下依赖项-
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>1.7.4</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-aws</artifactId>
<version>2.7.3</version>
</dependency>
然后你需要在sparkSession中设置S3凭证,像这样-
val sparkSession = SparkSession.builder.master("local").appName("spark session example").getOrCreate()
sparkSession.sparkContext.hadoopConfiguration.set("fs.s3n.impl", "org.apache.hadoop.fs.s3native.NativeS3FileSystem")
sparkSession.sparkContext.hadoopConfiguration.set("fs.s3n.awsAccessKeyId", "s3AccessKey")
sparkSession.sparkContext.hadoopConfiguration.set("fs.s3n.awsSecretAccessKey", "s3SecretKey")
它完成了。现在,您可以将 Parquet 文件读/写到 S3。例如:
sparkSession.read.parquet("s3n://bucket/abc.parquet") //Read
df.write.parquet("s3n://bucket/xyz.parquet") //Write
希望对你有帮助!