我有一个整数列表
List<Integer> lst = new ArrayList<>();
lst.add(10);
lst.add(15);
lst.add(16);
lst.add(8);
lst.add(100);
lst.add(1);
lst.add(40);
Run Code Online (Sandbox Code Playgroud)
如何编写代码以便我可以从列表中获取前 5 个最大元素,即100, 40, 16, 15, 10?
我尝试过使用 Java 流 API:
Integer var = lst.stream().max(Integer::compare).get();
Run Code Online (Sandbox Code Playgroud)
但只得到一个值元素。
我正在尝试了解 Kotlin 中的映射和归约操作。至少,我想这减少了我想做的事情。
假设我有一个名为Car的类,它接受任意数量的CarPart (可变参数构造函数) 。然后,我有一个CarPart列表,我将对其进行映射操作,根据操作结果,我需要使用每个子元素构建一辆 汽车,大致如下:
class CarPart(val description: String)
class Car(vararg val carPart: CarPart)
val carParts = listOf(CarPart("Engine"), CarPart("Steering Wheel")))
carParts.map { it.description.toUpperCase() }
.map { CarPart(it) }
.reduce { acc, carPart -> Car(carPart) } <--- I'm struggling here, is reduce what I should be doing
to construct one car from all the subelement?
Run Code Online (Sandbox Code Playgroud)
PS.1:我知道类设计可以更好,并且不采用可变参数,这只是我正在重构的遗留应用程序的一个示例,最初这是一个采用可变参数的 Java 类,我现在无法更改。
PS.2:映射到字符串然后从该字符串创建对象的示例只是为了示例。实际代码抓取列表中的一个对象。
我使用Java使用Hadoop Map/Reduce
假设,我已完成整个地图/减少工作.有没有什么方法可以重复整个地图/减少部分,而不会结束工作.我的意思是,我不想使用不同作业的任何链接,但只希望map/reduce部分重复.
谢谢!
我正在研究map reduce program并且正在考虑设计表单的计算,其中a1, b1的值是与键相关联的值
a1/b1, a1+a2/b1+b2, a1+a2+a3/b1+b2+b3 ...
Run Code Online (Sandbox Code Playgroud)
因此,在减速器的每个阶段,我都需要先前的值.如何将此设计为地图减少,因为在每个阶段只能读取与特定键相关联的值.
如果您觉得问题不明确,您可以引导我解决这个一般性问题吗?
更一般的问题:如何在map reduce中使用递归开发Fibonacci系列?
你能帮我修改我的设计吗?
key1, V1,V2,V3
Key2, V4,V5,V6
Run Code Online (Sandbox Code Playgroud)
映射器输出
Key1_X V1
Key1_Y V2
Key2_X V4
Key2_Y V5
Run Code Online (Sandbox Code Playgroud)
减速机输出
Key1_X {V1,.....}
Key1_Y {V2,.....}
Run Code Online (Sandbox Code Playgroud)
同样,现在在下一个映射器阶段.我可以创建这样的列表:
key1 {V1,....} {V2,....}
Key2 {V4,....} {V5,....}
Run Code Online (Sandbox Code Playgroud)
我这样做的理由是执行:
Key1 {V1/V2, V1+V6/V2+V7, V1+V6+..../V2+V7+.. , .........}
Run Code Online (Sandbox Code Playgroud)
是否有可能做到这一点?因为数据集非常大,所以我认为使用map reduce会更好.
更改设计有助于提高效率吗?
我在Hadoop平台(cloudera发行版)中编写了一个相对简单的map-reduce程序.除常规map-reduce任务外,每个Map&Reduce都会将一些诊断信息写入标准输出.
但是,当我查看这些日志文件时,我发现Map任务在节点之间相对均匀分布(我有8个节点).但是reduce任务标准输出日志只能在一台机器上找到.
我想,这意味着所有的reduce任务最终都会在一台机器上执行,而这是有问题和令人困惑的.
有谁知道这里发生了什么?是配置问题?如何使减少作业均匀分布?
因此,问题是:1.对于以下问题,mapreduce开销是否过高?有没有人知道每个地图/减少周期(例如迪斯科)需要多长时间才能完成一项非常轻松的工作?2.对于这个问题,mapreduce有更好的替代方案吗?
在地图缩减术语中,我的程序由60个地图阶段和60个减少阶段组成,所有这些阶段需要在1秒内完成.我需要以这种方式解决的问题之一是使用大约64000个变量的最小搜索.用于搜索的粗糙矩阵是块矩阵,沿对角线的1000个块大小为64×64,并且在最右侧和底部具有一行块.最后一部分:块矩阵求逆算法显示了这是如何完成的.可以在一个mapreduce步骤中计算Schur补码S_A和S_D中的每一个.逆的计算又需要一步.
从我迄今为止的研究来看,mpi4py似乎是一个不错的选择.每个流程都可以执行计算步骤,并在每个步骤之后向客户端报告,客户端可以使用新的状态变量向后报告,以便继续循环.这样,过程状态不会丢失,计算可以通过任何更新继续进行. http://mpi4py.scipy.org/docs/usrman/index.html
这个wiki有一些建议,但有没有人对最发达的解决方案有一个方向:http: //wiki.python.org/moin/ParallelProcessing
谢谢 !
我特别想知道MapR是否像Maout一样拥有Kmeans聚类?
PS:如果我在任何方面都错了,请纠正我
我正在用Nutch和Solr建立一个搜索引擎.
我知道通过使用Solr,我可以提高搜索的效率 - 让Nutch独自完成整个网络的爬行.
我也知道Hadoop用于通过形成集群和MapReduce来处理数PB的数据.
现在,我想知道的是
1)因为,我将只在一台机器上运行这些开源软件,也就是说,我的笔记本电脑在localhost上运行......在我的情况下,Hadoop如何形成集群是多么有益?如何在一台机器上形成集群?
2)在我的案例中,MapReduce的重要性是什么?
3)MAHOUT,CASSANDRA和HBASE如何影响我的发动机???
非常感谢这方面的任何帮助.如果我问一个菜鸟问题,请告诉我!
谢谢你
的问候
让我说我写一个WordCount示例,然后在eclipse项目中包含一个外部jar文件,如MyJar.jar.现在,如果我将整个WordCount项目导出为word.jar文件,然后键入
$> hadoop jar word.jar WordCount input output
Run Code Online (Sandbox Code Playgroud)
我知道作业执行,word.jar将有一个包含MyJar.jar文件的lib目录.现在,HDFS将在作业运行时存储此jar文件MyJar文件,从而调用此jar文件的方法?
我已将类型为LibSVM的对象序列化为名为j48.model的文件.此文件已传输到HDFS文件系统.
现在,在hadoop mapreduce代码中,如何反序列化此对象并将其读回到类LibSVM的实例中?我已将与LIBSVM相关的.jar文件作为外部jar文件包含在ma reduce项目中.
什么JAVA方法帮助我将文件j48.model的内容读入LibSVM对象?