我正在尝试按键对JavaPairRDD进行排序。
JavaPairRDD<String, HashMap<String, Object>> countAndSum = grupBydate
.reduceByKey(new Function2<HashMap<String, Object>, HashMap<String, Object>, HashMap<String, Object>>() {
@Override
public HashMap<String, Object> call(
HashMap<String, Object> v1,
HashMap<String, Object> v2)
throws Exception {
long count = Long.parseLong(v1.get(
SparkToolConstant.COUNT)
.toString())
+ Long.parseLong(v2
.get(SparkToolConstant.COUNT)
.toString());
Double sum = Double.parseDouble(v1.get(
SparkToolConstant.VALUE)
.toString())
+ Double.parseDouble(v2
.get(SparkToolConstant.VALUE)
.toString());
HashMap<String, Object> sumMap = new HashMap<String, Object>();
sumMap.put(SparkToolConstant.COUNT,
count);
sumMap.put(SparkToolConstant.VALUE, sum);
return sumMap;
}
});
System.out.println("count before sorting : "
+ countAndSum.count());
/**
sort by date
*/
JavaPairRDD<String, HashMap<String, Object>> sortByDate = countAndSum
.sortByKey(new Comparator<String>() {
@Override
public int compare(String dateStr1,
String dateStr2) {
DateUtil dateUtil = new DateUtil();
Date date1 = dateUtil.stringToDate(
dateStr1, dateFormat);
Date date2 = dateUtil.stringToDate(
dateStr2, dateFormat);
if (date2 == null && date1 == null) {
return 0;
} else if (date2 != null
&& date1 != null) {
return date1.compareTo(date2);
} else if (date2 == null) {
return 1;
} else {
return -1;
}
}
});
System.out.println("count after sorting : "
+ sortByDate.count());
块引号
Spark将首先序列化您在reducebykey
和sorbykey
中传递的函数,并将它们传递给执行器。因此,您应该保证您的函数在那里是可序列化的
代码中的sparktoolconstant
&dateutil
似乎是导致此错误的原因。
我目前正在使用上面的UDF将一列字符串解析成一个键和值的数组。“50:63.25,100:58.38”到[[50,63.2],[100,58.38]]。在某些情况下,字符串是“\N”,我无法解析列值。如果字符串是“\N”,那么我应该返回一个空数组。有人能帮我处理这个异常或帮我添加一个新的案例吗?我是spark-scala的新手。 错误:scala.MatchError:[Ljava.lang.St
这个函数的作用是将字符串列解析为键和值的数组。""to。这是我的UDF,它创建了一个包装的int和Double结构元素数组。 有些情况下,输入字符串的格式不正确,我会得到一个错误:输入字符串的< code > Java . lang . numberformatexception :因为“< code>k.trim.toInt”无法转换像“< code>.01-4.1293”这样的脏数据,这是一个
你可以使用raise语句 引发 异常。你还得指明错误/异常的名称和伴随异常 触发的 异常对象。你可以引发的错误或异常应该分别是一个Error或Exception类的直接或间接导出类。 如何引发异常 例13.2 如何引发异常 #!/usr/bin/python # Filename: raising.py classShortInputException(Exception): '''A u
问题内容: 鉴于此Java 8代码 我们如何正确地将其委派给方法调用的堆栈?(简而言之,如何使此方法抛出此错误?) Java中的Lambda看起来对错误处理不是很友好… 问题答案: 我的方法是从lambda 偷偷地 将其抛出,但是要小心,使该方法在其子句中声明它。使用我在这里发布的课程: 这样,您可以有效地使编译器仅“移开视线”,从而在代码中的某个位置禁用其异常检查,但是通过在方法中声明异常,可以
我使用正则表达式来查找一个字符串是否存在于一个书页中。下面是相同的代码。 观察: > 案例1:当searchText=“(222M)”时 结果:找到字符串。 案例2:当search chText="(222M"//缺少括号时 我得到以下例外。 索引22:.\b.{0}(1110r.{附近regexp模式中嵌套的括号不正确。{0}.\b 还有更好的在页面中查找字符串的选项。使用String.cont
请注意,我比程序员更擅长数据挖掘。我试图运行作者Sandy Ryza的书《Spark的高级分析》中的示例(这些代码示例可以从https://github.com/sryza/aas下载),我遇到了以下问题。当我打开这个项目在Intelij的想法,并试图运行它,我得到错误"异常线程"主"java.lang.NoClassDefFoundError: org/apache/火花/rdd/RDD"有人知