【发布时间】:2016-06-28 23:29:16
【问题描述】:
我是 spark 新手,我想创建一个 JavaPairRDD 以便能够对其进行排序并在键之间进行比较,因为它显示了下面的代码示例,我尝试创建一个 JavaPairRDD,但在使用了函数 sortByKey() 之后,我注意到它将键视为字符串而不是整数。
JavaRDD<String> csvFileC = sc.textFile(currentFile);
JavaPairRDD<Integer, String> pairsC = csvFileC.mapToPair(new keyData()).sortByKey(true).cache();
例如,如果pairC 包含以下元素:
(1,as),(2,you),(12,er),(3,cu),(22,hh)
所以在使用 sortByKey() 并再次显示后,我发现它像:
(1,as),(12,er),(2,you),(22,hh),(3,cu)
这意味着它将键视为字符串而不是整数,但我寻找的结果如下:
(1,as),(2,you),(3,cu),(12,er),(22,hh)
那么我怎样才能将我的密钥作为 int 处理呢? 有关更多详细信息,这是我用来将 RDD 转换为 PairRDD 的函数 keyData
public static class keyData implements PairFunction <String, Integer, String>
{
public Tuple2<Integer, String> call(String x) {
String[] strs = x.split(",");
return new Tuple2(strs[0], x.replaceFirst(strs[0]+",", ""));
}
【问题讨论】:
标签: java apache-spark rdd