内容简介:翻译自:https://stackoverflow.com/questions/25230363/how-to-convert-javapairrdd-into-hashmap
PairDStream.我需要将它转换为HashMap.我尝试通过调用“collectAsMap()”函数和它的工作方式对普通的JavaPairRDD做同样的事情但是当我在DStream上尝试做同样的事情时,它失败了.
我试图通过使用“foreachRDD”函数将“JavaPairDStream”转换为“JavaPairRDD”来实现相同的目标,之后我在JavaPairRDD上使用“collectAsMap()”函数.
Map<String,String> value= new HashMap<String,String>();
value=line.collectAsMap();
//Here "line" is a "JavaPairRDD<String,String>".
它不会给出任何编译错误但是当我运行程序时它会失败并抛出错误,如下所示.
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Lscala.Tuple2;
at org.apache.spark.rdd.PairRDDFunctions.collectAsMap(PairRDDFunctions.scala:447)
at org.apache.spark.api.java.JavaPairRDD.collectAsMap(JavaPairRDD.scala:464)
at attempt1.CSV_Spark$3.call(CSV_Spark.java:109)
at attempt1.CSV_Spark$3.call(CSV_Spark.java:1)
我不确定我的方法是否正确.普通的“JavaPairRDD”和“foreachRDD”函数创建的“JavaPairRDD”之间有什么区别吗?为什么相同的方法适用于普通的“JavaPairRDD”,但是当我将它应用于通过在JavaPairDStream上应用“foreachRDD”函数创建的“JavaPairRDD”时失败.如果我在任何地方出错,请告诉我.如果还有其他方式,请在此处发布.谢谢.
在编译时,接受向下转换,因为Map和HashMap都在相同的继承中.虽然我们没有得到任何编译时错误,但我们将在运行时获得ClassCastException.要避免此问题,您可以尝试这样做:
码:
JavaPairRDD<K, V> javaRDDPair = rddInstance.mapToPair(new PairFunction<T, K, V>() {
@Override
public Tuple2<K, V> call(final T value) {
// statements
// operations on value
return new Tuple2<K, V>(KTypeValue, VTypeValue);
}
});
Map<K,V> map = javaRDDPair.collectAsMap();
HashMap<K,V> hmap = new HashMap<K,V>(map);
注意:rddInstance是JavaRDD类型的对象.
假设我们有一个JavaRDD,其中包含T类型的值.
在转换它时,我们创建JavaPairRDD,它保存<K,V>对.
现在的要求是将JavaPairRDD转换为HashMap对象,以便在应用程序中进行进一步的计算.使用collectAsMap方法并将其结果分配给Map对象本身.之后,您可以通过传递Map实例来创建HashMap.
翻译自:https://stackoverflow.com/questions/25230363/how-to-convert-javapairrdd-into-hashmap
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- JavaScript进阶系列-类型转换、隐式类型转换
- Android 多国语言转换 Excel 和 Excel 转换为 string
- [SSL证书转换(一)]关于JKS 转换成 CRT 和 KEY
- c++中几种常见的类型转换。int与string的转换,float与string的转换以及string和long类型之间的相互...
- Protocol Buffer使用转换工具将proto文件转换成Java文件流程及使用
- 开源 | Alita:一套把 React Native 代码转换成微信小程序代码的转换引擎工具
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
浪潮之巅(第三版)(上下册)
吴军 / 人民邮电出版社 / 2016-5 / 99.00元
一个企业的发展与崛起,绝非只是空有领导强人即可达成。任何的决策、同期的商业环境,都在都影响着企业的兴衰。《浪潮之巅》不只是一本历史书,除了讲述科技顶尖企业的发展规律,对于华尔街如何左右科技公司,以及金融风暴对科技产业的冲击,也多有着墨。此外,这本书也着力讲述很多尚在普及 或将要发生的,比如微博和云计算,以及对下一代互联网科技产业浪潮的判断和预测。因为在极度商业化的今天,科技的进步和商机是分不开的。......一起来看看 《浪潮之巅(第三版)(上下册)》 这本书的介绍吧!