问题标签 [hadoop-partitioning]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
hive - 如何按具有特定分区的配置单元中的数据进行分组?
我有以下内容:
为什么无法group by
获取数据?
hadoop - 使用可变长度/非分隔二进制文件在 hadoop 中拆分
我刚刚开始研究基于 hadoop 的开放街道地图数据摄取器。有几种格式 - 但我一直针对基于协议缓冲区的格式(注意 - 它不是纯 pb)。
在我看来,将文件预拆分为序列文件会更有效 - 而不是以自定义记录阅读器/输入格式处理可变长度编码 - 但需要进行完整性检查。
PBF 格式描述中更详细地描述了该格式 但基本上它是 [BlobHeader,Blob] 块的集合。
有一个 Blob 标头
然后是 Blob(其大小由标头中的 datasize 参数定义)
一旦你进入blob显然会有更多的结构 - 但我会在映射器中处理它 - 我想做的是最初每个映射器有一个blob(后来可能是每个映射器的一些blob)。
其他一些输入格式/记录读取器使用“足够大”的拆分大小,然后向后/向前搜索到分隔符 - 但由于没有分隔符可以让我知道 blob/headers 的偏移量 - 并且没有索引也指向他们 - 如果不首先通过文件流式传输,我看不到任何方法来获得我的分割点。
现在我不需要从磁盘上实际读取整个文件——我可以从读取标题开始,使用该信息查找 blob,将其设置为第一个分割点,然后重复。但这是我能想到的预分割成序列文件的唯一替代方法。
有没有更好的方法来处理这个 - 或者如果没有,对这两个建议的想法?
java - 使用 -libjars 的 MapReduce 流作业,自定义分区器失败:“找不到类”
我正在尝试将自定义(java)分区器附加到我的 MapReduce 流作业。我正在使用这个命令:
其中重要的一点是文件 NumericPartitioner.jar,它位于运行命令的同一文件夹中(比 Hadoop 根安装低一级。)这是它的代码:
然而,当我尝试运行上述命令时,我得到:
这是怎么回事,我怎样才能让 mapReduce 找到我的分区器?
hadoop - 分区器或多个输出
我想听听您对 Partitioner vs MultipleOutputs 的看法。
假设我有一个包含密钥的文件
我想要 2 个文件:一个文件包含以开头的键0:
,另一个包含以1:
. 我应该使用哪种方法:
1) 使用自定义分区器,它将解析键并为 getPartition() 返回 0 或 1。
2)在reduce阶段使用MultipleOutputs.write,通过解析key并为MultipleOutputs.write的参数 提供zero
or 。one
namedOutput
哪一个更好?对我来说,1) 更好,因为减速器处理单个文件。
java - Hadoop 中的默认哈希分区器将哪两个不同的键分配给同一个减速器?
正如我们所知,这Hadoop
保证了来自不同的相同密钥mappers
将被发送到相同的reducer
.
但是如果两个不同的key有相同的hash值,它们肯定会去相同的 reducer
,那么它们会被有序地发送到相同的 reduce
方法吗?哪个部分负责这个逻辑?
非常感谢!
hadoop - Hadoop如何分配给reducers来处理不平衡的负载 - CustomPartition
我有一个 map reducer 作业,它必须在多个输出中输出,我正在使用 multipleOutputFormat,如本例所示:http: //grepalex.com/2013/05/20/multipleoutputs-part1/
这是挑战:
- 如果我的分区器向每个减速器发送一个键(假设键是指单独的输出文件),那么我的一些具有大量数据的减速器将永远占用。
- 如果我的分区器随机发送每个减速器(theKey+randomNumber),那么许多减速器写入多个输出,我有 IO 问题。
作为解决方案:
option1:根据权重为reducers分配key。所以所有的减速器都有相同的负载。(1 个大键被发送到 5 个不同的减速器,而 6 个小键被发送到单个减速器)
选项2:再次根据权重分配键,但确保减速器只能取一个键。(1 个大键被发送到 5 个不同的,但 6 个小键也被发送到单独的减速器)
优点缺点:
- 在选项 1 中:我有平衡减速器,但一些减速器写入不同的文件(小键)。
- 在选项 2 中:我有不平衡的减速器,但限制了减速器的最大负载,并且每个减速器都写入自己的文件。
这两个选项都在合理的时间内运行。我需要一些关于我应该选择哪一个的建议。
谢谢
hadoop - 使用 hive 在大范围分区中选择数据
我使用 hive 在大范围分区中选择数据时遇到了一些问题
这是我要执行的 HQL:
"cdate" 是表 RAW_TABLE 的分区
但是在给我工作ID后它卡住了
一旦我将其更改为:
然后它开始工作
有什么解决方案可以帮助我执行第一个 HQL?
感谢您的帮助!
c++ - 未定义对 hadoopPipes 的引用
我为 MapReduce 任务编写了以下代码
当运行代码以及以下生成文件时:-
显示以下错误:-
在函数partitionReducer::reduce(HadoopPipes::ReduceContext&)':
partitionMR.cpp:(.text._ZN16partitionReducer6reduceERN11HadoopPipes13ReduceContextE[partitionReducer::reduce(HadoopPipes::ReduceContext&)]+0x1a9): undefined reference to
HadoopUtils::toString(int)' collect2: ld 返回 1 退出状态 make: * [partitionMR] 错误 1
关于我得到的错误的任何线索?!?
请帮助!谢谢 !
hadoop - 在map reduce中通过map函数的文件
是否有可能以某种方式通过每个映射函数传递一组文件。要求是为不同的 2 操作并行处理每个文件。我对 map reduce 完全陌生,我使用 JAVA 作为我的编程语言。
java - 提供具有相同文件拆分的地图拆分
如何为馈送到映射器的文件的每一行提供同一文件的拆分?
基本上我想做的是
我可以在java中使用map reduce来做到这一点吗?