Apache spark 当spark作业写入S3并使用athena进行查询时,如何使数据高度可用
我正在存储通过firehose传输到S3的数据流,并在Athena wo中创建了表来查询这些数据。S3中的数据根据clientID、date等字段进行分区。spark作业正在处理定期传入的数据。在每次运行时,spark job都会将数据(该时间间隔的增量)与S3中该分区中已经可用的基础数据(如果有重复记录,则在上次修改时间之前)合并,并覆盖该分区以进行保存。当S3A提交者写入这些文件时,它会删除现有文件并复制新创建的文件。是否有可能在从athena表查询数据时,它不会返回任何数据,因为旧文件已被删除,而新文件尚未完全写入。如果是,你如何处理 是,如果删除了底层S3对象,athena查询将返回零行。S3A提交者将在上传之前删除对象,因此,在表备份数据丢失或不完整的情况下,总是会有一段时间的风险 要使athena查询对正在更新的数据高度可用,请以适当的频率将查询数据批量写入S3中的版本化路径(如Apache spark 当spark作业写入S3并使用athena进行查询时,如何使数据高度可用,apache-spark,amazon-s3,pyspark,amazon-athena,Apache Spark,Amazon S3,Pyspark,Amazon Athena,我正在存储通过firehose传输到S3的数据流,并在Athena wo中创建了表来查询这些数据。S3中的数据根据clientID、date等字段进行分区。spark作业正在处理定期传入的数据。在每次运行时,spark job都会将数据(该时间间隔的增量)与S3中该分区中已经可用的基础数据(如果有重复记录,则在上次修改时间之前)合并,并覆盖该分区以进行保存。当S3A提交者写入这些文件时,它会删除现有文件并复制新创建的文件。是否有可能在从athena表查询数据时,它不会返回任何数据,因为旧文件已被
S3://my data/2020-02-07
)。批处理完成后,向athena DB发送ALTER TABLE SET LOCATION
DDL,将其指向最新版本的路径。然后,根据您的保留策略清理旧路径(最新版本-n)