我看到应用程序正在删除外部表并再次创建,然后加载数据并在每次加载数据时运行msck命令..每次删除和创建时这样做的好处是什么?
1dkrff031#
丢弃和重新创建没有任何好处 EXTERNAL 表,因为删除表会保留完整的数据。尽管放弃和重新创造可能有好处 MANAGED 表,因为它也会删除数据。如果您在s3上运行,一种可能的情况是:在加载完成之前(而不是在加载时)尽早删除文件可能会降低在加载后s3中最终出现一致性问题的可能性。首先,当文件被删除时,您在读取表时可能会遇到ec问题(删除后立即和一段时间内)。文件的早期删除将加速s3的同步。第二,如果您使用相同的名称编写文件(重写),最终会出现问题。早期删除可能会有所帮助,不过最好在分区文件夹路径中使用以guid为前缀的(唯一的)文件名或时间戳,或者使用其他类似技术来解决这类问题(重写后的最终一致性)。
EXTERNAL
MANAGED
1条答案
按热度按时间1dkrff031#
丢弃和重新创建没有任何好处
EXTERNAL
表,因为删除表会保留完整的数据。尽管放弃和重新创造可能有好处
MANAGED
表,因为它也会删除数据。如果您在s3上运行,一种可能的情况是:
在加载完成之前(而不是在加载时)尽早删除文件可能会降低在加载后s3中最终出现一致性问题的可能性。
首先,当文件被删除时,您在读取表时可能会遇到ec问题(删除后立即和一段时间内)。文件的早期删除将加速s3的同步。
第二,如果您使用相同的名称编写文件(重写),最终会出现问题。早期删除可能会有所帮助,不过最好在分区文件夹路径中使用以guid为前缀的(唯一的)文件名或时间戳,或者使用其他类似技术来解决这类问题(重写后的最终一致性)。