Skip to main content
Version: 1.0.0

S3 文件系统

在本页中,我们将解释如何让你的 Hudi Spark 作业存储到 AWS S3 。

AWS 配置

Hudi 与 S3 的适配需要两项配置:

  • 为 Hudi 加 AWS 凭证
  • 将需要的 jar 包添加到类路径

AWS 凭证

在 S3 上使用 Hudi 的最简单的办法,是为你的 SparkSessionSparkContext 设置 S3 凭证。 Hudi 将自动拾取并通知 S3 。

或者,将需要的配置添加到你的 core-site.xml 文件中, Hudi 可以从那里获取它们。用你的 S3 Bucket 名称替换 fs.defaultFS ,之后 Hudi 应该能够从 Bucket 中读取/写入.

  <property>
<name>fs.defaultFS</name>
<value>s3://ysharma</value>
</property>

<property>
<name>fs.s3.impl</name>
<value>org.apache.hadoop.fs.s3native.NativeS3FileSystem</value>
</property>

<property>
<name>fs.s3.awsAccessKeyId</name>
<value>AWS_KEY</value>
</property>

<property>
<name>fs.s3.awsSecretAccessKey</name>
<value>AWS_SECRET</value>
</property>

<property>
<name>fs.s3n.awsAccessKeyId</name>
<value>AWS_KEY</value>
</property>

<property>
<name>fs.s3n.awsSecretAccessKey</name>
<value>AWS_SECRET</value>
</property>

hudi-cli 或 DeltaStreamer 这些工具集能通过 HOODIE_ENV_ 前缀的环境变量拾取。以下是一个作为示例的基础代码片段,它设置了这些变量并让 CLI 能够在保存在 S3 上的数据集上工作。

export HOODIE_ENV_fs_DOT_s3a_DOT_access_DOT_key=$accessKey
export HOODIE_ENV_fs_DOT_s3a_DOT_secret_DOT_key=$secretKey
export HOODIE_ENV_fs_DOT_s3_DOT_awsAccessKeyId=$accessKey
export HOODIE_ENV_fs_DOT_s3_DOT_awsSecretAccessKey=$secretKey
export HOODIE_ENV_fs_DOT_s3n_DOT_awsAccessKeyId=$accessKey
export HOODIE_ENV_fs_DOT_s3n_DOT_awsSecretAccessKey=$secretKey
export HOODIE_ENV_fs_DOT_s3n_DOT_impl=org.apache.hadoop.fs.s3a.S3AFileSystem

AWS 库

将 AWS Hadoop 库添加到我们的类路径。

  • com.amazonaws:aws-java-sdk:1.10.34
  • org.apache.hadoop:hadoop-aws:2.7.3

如果使用了 AWS Glue 的数据,则需要 AWS Glue 库。

  • com.amazonaws.glue:aws-glue-datacatalog-hive2-client:1.11.0
  • com.amazonaws:aws-java-sdk-glue:1.11.475