gpt4 book ai didi

database - 了解HIVE数据库中的映射器和化简器

转载 作者:可可西里 更新时间:2023-11-01 16:22:35 25 4
gpt4 key购买 nike

我正在类里面学习大数据,现在我们正在学习HIVE。今天我们了解了映射器和缩小器,但说实话,它已经超出了我的范围。有人可以告诉我映射器和化简器在每个步骤中做什么吗?还是至少让我读到了一些好书?提前致谢

最佳答案

让我们尝试从我从互联网上下载的图表中了解map-reduce流程。

我们将讨论hadoop中的字数统计问题,hadoop在Hadoop中也称为hello world。

字数统计是一个程序,在该程序中我们可以从文件中查找每个单词的出现情况。

让我们尝试了解

步骤1):

输入文件:我们需要一些数据来运行字数统计程序,以便在群集上运行此程序,第一步应该是将该文件放在hadoop上,这可以通过各种最简单的方法来使用hadoop shell命令:
如put或copyFromLocal可以使用:

步骤2)

Map Reduce以键值对的形式进行交谈,这意味着映射器将以键值对的形式获取输入,他们将进行所需的处理,然后以键值对的形式产生中间结果,该结果将被输入reducer对此进行进一步的工作,最后reducer还将其输出写入键值对中。

但是我们知道映射器仅在主驱动程序之后执行,因此谁以键值对的形式向映射器提供输入,输入格式会为您完成此任务。

InputFormat是执行两个主要操作的类:

1)输入分割(您的输入分割驱动的映射器实例数或输入分割驱动的映射器数,默认情况下,如果默认配置,一个分割大小等于一个块,但是您可以更改根据您的需要分割大小。

因此,如果您正在播放512 mb的数据并且块大小为64 mb,那么将使用大约8个输入分割大小,将运行8个映射器实例或使用8个映射器)。

2)在键值对中破坏数据(记录读取器是在后端执行此操作的类)

现在,映射器的键和值将由您使用的文件输入格式来驱动,例如TextInputFormat,这是最常用的输入格式。它发送longWritable(等效于long)作为键,并将Text(string)作为值发送给mapper

您的mapper类将在1个split上工作,在该类中,您有一个map函数可以一次在一行上工作,因此如上图所示,单行将进入map函数

例如,它发送:“Apple orange Mango”到 map 功能

3)映射器

在mapper中,我们将line作为输入,因此现在我们需要编写逻辑。

我们将行划分为基于定界的单词,所以现在我们在一行中有单个单词
众所周知, map 适用于键值对。
我们可以将其作为关键,并将值设为1

为什么我们把单词作为关键而不是反过来,因为下一阶段是

改组和排序阶段:在此阶段,框架将基于相似的键组成组,或者在改组阶段将所有不同的键放在一起,并根据键对它们进行排序。

现在让我们再次修改:

最初我们有一个文件,该文件根据输入拆分发送到不同的映射器,然后在map函数的mapper类中,我们以一行作为输入,因此针对一行构建了逻辑,所有行将以相似的方式工作一个实例的方式,最后所有实例都可以像这样并行工作。

现在假设您有10个mapper运行,现在在map reduce中reducer的数量总是少于mapper。

所以如果我们使用10个映射器,那么最有可能使用2-3个缩减器。

改组和排序阶段,我们已经看到所有类似的键将组合在一起。

首先,将基于哪个基础来决定将哪个映射器数据传递给哪个缩减器。
在万一情况下,必须将10个映射器数据划分为2个缩减器,因此将根据该数据进行决策。

有一个名为分区程序的组件,它将基于哈希分区并在该映射器上使用模运算符,决定将哪个映射器输出输出到哪个reducer。

因此,如果我们使用散列,则可以100%确保将所有相同的键都分配给相同的reducer。

我们无需为任何事情而烦恼,因为框架已被设计成可以有效地做到这一点,但是是的,因为它是用Java编写的,所以我们确实可以根据需要自定义键,自定义分区,定制比较器等等。

4)
Reducer :现在,reducer将在其输入中获取键和其值列表,如下所示

苹果,<1,1,1,1)>

现在在reducer中我们编写逻辑我们到底想做什么,对于我们的情况,我们要进行字数计算,因此简单地我们必须计算值。

这也是我们在Map阶段最初将1作为值的原因,因为我们只需要计数。

输出:最终输出将由reducer再次以键值对的形式写入hdfs。

关于database - 了解HIVE数据库中的映射器和化简器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29959845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com