我在RDD中有数据有4列,如地理,产品,时间和价格。我想根据地理位置和时间计算运行总和。
给定数据
我需要结果。
[
我需要这个spark-Scala-RDD。我是Scala世界的新手,我可以在SQL中轻松实现这一点。我想在spark -Scala -RDD中使用(map,flatmap)。
感谢您的帮助。
答案 0 :(得分:2)
这可以通过定义窗口函数来实现:
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
String currentText = editText.getText().toString();
if(currentText.length() > 30) {
editText.setText(currentText.substring(0, 30));
}
}
});
您可以使用Window功能执行此操作,请查看有关Windows的Databrick博客: https://databricks.com/blog/2015/07/15/introducing-window-functions-in-spark-sql.html
希望这有帮助。
快乐的火花!干杯,福克
答案 1 :(得分:1)
我认为这也有助于其他人。我试过SCALA RDD。
val fileName_test_1 ="C:\\venkat_workshop\\Qintel\\Data_Files\\test_1.txt"
val rdd1 = sc.textFile(fileName_test_1).map { x => (x.split(",")(0).toString() ,
x.split(",")(1).toString(),
x.split(",")(2).toString(),
x.split(",")(3).toDouble
)
}.groupBy( x => (x._1,x._3) )
.mapValues
{
_.toList.sortWith
{
(a,b) => (a._4) > (b._4)
}.scanLeft("","","",0.0,0.0){
(a,b) => (b._1,b._2,b._3,b._4,b._4+a._5)
}.tail
}.flatMapValues(f => f).values