如何加密apache hudi外部表数据,这些数据存在于s3中,通过spark job同步到hive表



技术背景:我从kafka获得表数据,并使用spark将其放入hudi和hive表。我正在使用AWS EMR。我想加密集群内传输的数据以及s3中同步的外部表数据(静态数据)

注意:我不想使用AWS EMR加密,想使用spark或hudi加密,不想只坚持AWS,想要独立于平台的解决方案

我读到关于hudi/spark加密(链接),但那是一个列加密,我不想加密特定的列,我希望所有的数据都被加密,所以有没有任何spark配置来加密整个数据在休息以及在集群内传输?

TIA

Parquet模块化加密是Parquet唯一支持的客户端加密方式。您可以通过获取列列表并将所有列添加到加密配置中,使用相同的密钥动态加密所有列:

jsc.hadoopConfiguration().set("parquet.crypto.factory.class", "org.apache.parquet.crypto.keytools.PropertiesDrivenCryptoFactory")
jsc.hadoopConfiguration().set("parquet.encryption.kms.client.class" , "org.apache.parquet.crypto.keytools.mocks.InMemoryKMS")
jsc.hadoopConfiguration().set("parquet.encryption.key.list", "my_key:<some key>")
jsc.hadoopConfiguration().set("parquet.encryption.column.keys", "my_key:%s".format(df.columns.mkString(",")))

如果你想加密整个文件,最好的解决方案是使用服务器端加密,但你需要配置每个存储服务(S3, GCS, hdfs,…)。如果您确实使用多个存储服务,请尽量避免此解决方案。

最新更新