我看到应用程序正在删除外部表,然后再次创建,然后每次加载数据时都加载数据并运行msck命令。每次删除和创建时,这样做有什么好处?
删除和重新创建EXTERNAL
表没有任何好处,因为删除表会使数据保持不变。
尽管删除和重新创建MANAGED
表可能会有好处,因为它也会删除数据。
如果在S3上运行,则可能是一种情况:
在加载完成之前提早删除文件,而不是在加载时删除文件,可以减少加载后S3中最终一致性问题的可能性。
首先,当文件删除时,读取表时可能会遇到EC问题(在删除后立即删除,并且在一段时间内)。提前删除文件将加快S3同步。
第二,如果使用相同名称写入文件(重写),最终会出现问题。尽早删除可能会有所帮助,尽管最好在分区文件夹路径中使用guid前缀(唯一)文件名或时间戳,或使用其他类似技术来解决此类问题(重写后最终保持一致)。