mapreduce - 使用 MapReduce 确定输入数据中的模式

标签 mapreduce apache-spark

我有一组按一定顺序排列的数字。顺序很重要,需要维护。我需要找到符合条件的连续数字的最大数量。

示例:

条件:素数

输入数据:1,3,2,4,7,5,3,11,2,4,6,3,7,3,5,1,3,7,5 ,4

Answer : 8

最佳答案

此解决方案要求您知道输入的每个元素的位置 i。这不一定很容易,但现在假设一下。

首先,想象将每个值映射到列表中的索引 i,然后仅保留原始值 n 满足条件的值。那么只需找到输入中最长的连续序列即可。

首先,对于输入中的每个值,在位置 i 处,取 i 的前几位(可能是前 8 位)作为输出键。这将导致附近的值从 256 个值转到同一个 reducer 。如果原始值满足条件,则将其输出为键,将 i 作为值输出

在每个 reducer 中,只需迭代索引并记录您看到的最长连续序列。将其发出为(开始,结束)。

最后,您将从化简器中读取所有这些值,并处理来自两个不同化简器的两个序列实际上一起运行的情况(一个在 n 处结束,下一个在 n+1 处开始)。折叠这些,然后只报告最长的长度。

这在 Spark 中也非常简单。

关于mapreduce - 使用 MapReduce 确定输入数据中的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25211954/

相关文章:

apache-spark - 从 wso2 数据分析服务器中删除事件数据表

apache-spark - Py4JJavaError : An error occurred while calling o389..csv

java - mapreduce hadoop 中的 reducer 数量

hadoop - 运行映射减少作业以从Yarn上的hbase表删除数据时,作业失败

java - 在 hadoop 的迭代作业中,在每个拆分的 mapreduce 输入文件上附加相同的字符串(先前的结果)

ruby - MongoDB聚合数据生成 'latest activity'

apache-spark - 插入 map 时不支持的操作异常

hadoop - 仅当所有映射器完成时才减少工作?

apache-spark - MLlib MatrixFactorizationModel RecommendationProducts(user, num) 对某些用户失败

linux - 在 C# 中,如何在格式化 DateTIme 时设置英文时区?