自动将 S3 与 Hive Metastore 同步
Automatically sync S3 with Hive metastore
我在 Spark/Hive 中使用 EMR 来管理 S3 中的一些镶木地板文件。当使用 spark 脚本 redact/remove(由于 GDPR)一些信息时,EMRFS 不同步。
使用 emrfs sync s3://path/
我注意到有些文件是红色的(仅限 MANIFEST)。这不应该自动同步,或者在某个时间结束时同步吗?为了解决这个问题,我需要手动 运行 emrfs sync s3://path/
.
如果您使用 aws-s3-client
放置或删除对象,那么 EMRFS 将不知道该事务。
方法一:
您需要在操作中使用 emrfs jar。确保版本与您的集群相同。
这样 emrfs 就会同步。
方法二:
或者,如果您有一些配置单元 table 指向该 s3 位置,您也可以使用 spark 读写方法。这样一来,您根本不必关心 emrfs。
// Read from hive table
sparkSession.read().table("<table-name>")
// Write into hive table
df.write().mode(SaveMode.Overwrite).insertInto("<table-name>")
我最终向 EMR 添加了一个额外的步骤来执行 documentation 中提到的 emrfs sync
。
我在 Spark/Hive 中使用 EMR 来管理 S3 中的一些镶木地板文件。当使用 spark 脚本 redact/remove(由于 GDPR)一些信息时,EMRFS 不同步。
使用 emrfs sync s3://path/
我注意到有些文件是红色的(仅限 MANIFEST)。这不应该自动同步,或者在某个时间结束时同步吗?为了解决这个问题,我需要手动 运行 emrfs sync s3://path/
.
如果您使用 aws-s3-client
放置或删除对象,那么 EMRFS 将不知道该事务。
方法一: 您需要在操作中使用 emrfs jar。确保版本与您的集群相同。
这样 emrfs 就会同步。
方法二: 或者,如果您有一些配置单元 table 指向该 s3 位置,您也可以使用 spark 读写方法。这样一来,您根本不必关心 emrfs。
// Read from hive table
sparkSession.read().table("<table-name>")
// Write into hive table
df.write().mode(SaveMode.Overwrite).insertInto("<table-name>")
我最终向 EMR 添加了一个额外的步骤来执行 documentation 中提到的 emrfs sync
。