我正在使用Hive 3.1.0,我的查询每小时从某个路径读取一堆 parquet 文件。我无法控制这些文件是如何生成的,因为这些文件是由某个外部进程创建的。在某些罕见的情况下,在指定的路径内,某个 parquet 文件可能以零大小存在。我希望Hive忽略此问题,但我的Hive查询失败,错误如下:-
<filename>.parquet is not a Parquet file (too small length: 0)
如何避免这种情况?一小时内可能会有太多的文件登陆,因此创建自动化来检测和删除空文件将是一种矫枉过正的做法。我认为Hive中应该有一些更简单的选项,让它忽略这些文件。
2条答案
按热度按时间4ioopgfo1#
尝试使用属性$file_size。如果它大于0,则处理数据加载。如果您可以提供查询作为您尝试访问的方式,则会更好。
iyr7buue2#
我不知道如何将其作为hive属性来处理。如果有的话,您可能希望在推送到最终存储之前在一个单独的目录中处理空文件,使用:
find ./your-directory -type f -empty -print -delete
或者如果不可能,处理删除最终存储中的文件。
尝试列出要删除的文件以进行健全性检查。