该问题专门针对文件系统为Azure存储的基于HDInsight的Hive。所以问题是我有一个分区配置单元表,其分区模式如下:-
Department-->Year-->Month-->Day
一切正常运行,但是我注意到在每个分区级别都有一个零大小的文件。因此,对于特定的数据,可以说驻留在以下分区中:-
Department=IT-->Year=2019-->Month=10-->Day=11
因此,我看到正在创建一个名为'Department = IT'的文件夹,但在同一级别上,我还看到了一个大小完全相同的文件名为'Department = IT'的零大小文件,如果我有很多部门,您可以想象有是几个零尺寸的文件。再次在年,月,日发生这种情况-同样的问题,对于每个分区值,它正在创建大小为零的文件。我怀疑这个问题是基于HDInsight的Hive所特有的,因为它使用Azure存储作为没有目录概念的文件系统,它是对象存储,文件夹不是真实的,而是文件夹路径是名称的一部分。一滴因此,当配置单元向文件系统发出创建目录的请求时,它没有意识到底层文件系统的类型,因此无论如何都会向底层文件系统发出“创建目录”请求,这反过来又试图通过创建零来满足该请求。大小的文件,因为它无法创建目录,因此当它有实际数据要写入时,它会以其名称在逻辑上看起来像目录的方式创建一个名称为path的blob。这是我的理解。现在,所有这些零大小的文件都必须由Hadoop进行记账。有什么方法可以防止这种情况的发生,或者有更简单的方法可以消除这种情况?在一段时间内,这些文件的数量急剧增加。