Hadoop中的索引过程
请任何人解释一下Hadoop中的索引过程是什么意思。 它是否有点像我们在RDBMS中对数据进行的传统索引,因此,在Hadoop中,我们对数据块进行索引,并将数据块的物理地址存储在某些数据结构中。 因此,这将是集群中的一个额外空间 谷歌搜索了这个话题,但没有得到任何令人满意和详细的东西。 任何指示都会有帮助Hadoop中的索引过程,hadoop,Hadoop,请任何人解释一下Hadoop中的索引过程是什么意思。 它是否有点像我们在RDBMS中对数据进行的传统索引,因此,在Hadoop中,我们对数据块进行索引,并将数据块的物理地址存储在某些数据结构中。 因此,这将是集群中的一个额外空间 谷歌搜索了这个话题,但没有得到任何令人满意和详细的东西。 任何指示都会有帮助 提前感谢我们可以确定创建索引的两种不同粒度级别:基于文件URI的索引或基于InputSplit的索引。让我们举两个不同的数据集示例 索引 第一个示例: 数据集中的2个文件可容纳25个块,并被
提前感谢我们可以确定创建索引的两种不同粒度级别:基于文件URI的索引或基于InputSplit的索引。让我们举两个不同的数据集示例 索引 第一个示例: 数据集中的2个文件可容纳25个块,并被标识为7个不同的输入拆分。您要查找的目标(灰色突出显示)位于文件1(块2、块8和块13)和文件2(块17)中 使用基于文件的索引,您将得到2个文件(此处为完整数据集),这意味着您的索引查询将相当于完整扫描查询 使用基于InputSplit的索引,您将得到7个可用的4个InputSplit。性能肯定比执行完全扫描查询要好 索引 让我们再举一个例子: 这一次,相同的数据集已按要索引的列排序。您要查找的目标(灰色突出显示)现在位于文件1(块1、块2、块3和块4)中 使用基于文件的索引,您的数据集中只会有一个文件 使用基于InputSplit的索引,您将在7上获得1个InputSplit
对于这个特定的研究,我决定使用一个自定义的基于InputSplit的索引。我认为,这种方法应该在实现所需的努力、在性能优化方面可能带来的附加值以及其预期的适用性(无论数据分布如何)之间取得很好的平衡。Hadoop将数据存储在文件中,而不为其编制索引。为了找到一些东西,我们必须运行一个MapReduce作业来遍历所有数据。Hadoop在数据对于数据库来说太大的情况下是有效的。对于非常大的数据集,重新生成索引的成本非常高,您无法轻松为更改的数据编制索引 然而,我们可以在HDFS中使用两种类型的索引,即。基于文件的索引和基于InputSplit的索引。 假设我们有2个文件要存储在HDFS中进行处理。第一个是500MB,第二个是250MB左右。因此,我们将在第一个文件上有4个128MB的输入拆分,在第二个文件上有3个输入拆分。 对于上述情况,我们可以应用两种类型的索引: 1.使用基于文件的索引,您将得到2个文件(此处为完整数据集),这意味着您的索引查询将相当于完整扫描查询 2.使用基于InputSplit的索引,您将得到4个InputSplit。性能肯定比执行完全扫描查询要好 现在,为了实现InputSplits索引,我们需要执行以下步骤: