首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Apache Spark Java或Scala中实现这一点?

如何在Apache Spark Java或Scala中实现这一点?
EN

Stack Overflow用户
提问于 2018-08-01 10:14:45
回答 1查看 97关注 0票数 -2

汽车上的设备不会在行程开始时发送行程ID,但会在行程结束时发送。如何将对应的TRIP IDS应用于对应的记录

09:30,25,DEVICE_1
10:30,55,DEVICE_1
10:25,0,DEVICE_1,TRIP_ID_0
11:30,45,DEVICE_1
10:30,55,DEVICE_2
10:30,55,DEVICE_3
11:30,45,DEVICE_3
12:30,0,DEVICE_3,TRIP_ID_3
10:30,55,DEVICE_4
11:30,45,DEVICE_4
11:30,45,DEVICE_2
12:30,0,DEVICE_2,TRIP_ID_2
12:30,0,DEVICE_4,TRIP_ID_4
10:30,55,DEVICE_5
11:30,45,DEVICE_5
12:30,0,DEVICE_5,TRIP_ID_5
12:30,0,DEVICE_1,TRIP_ID_1

所以上面的代码是这样的,

09:30,25,DEVICE_1,TRIP_ID_0
10:25,0,DEVICE_1,TRIP_ID_0
10:30,55,DEVICE_1,TRIP_ID_1
11:30,45,DEVICE_1,TRIP_ID_1
12:30,0,DEVICE_1,TRIP_ID_1
10:30,55,DEVICE_2,TRIP_ID_2
11:30,45,DEVICE_2,TRIP_ID_2
12:30,0,DEVICE_2,TRIP_ID_2
10:30,55,DEVICE_3,TRIP_ID_3
11:30,45,DEVICE_3,TRIP_ID_3
12:30,0,DEVICE_3,TRIP_ID_3
10:30,55,DEVICE_4,TRIP_ID_4
11:30,45,DEVICE_4,TRIP_ID_4
12:30,0,DEVICE_4,TRIP_ID_4
10:30,55,DEVICE_5,TRIP_ID_5
11:30,45,DEVICE_5,TRIP_ID_5
12:30,0,DEVICE_5,TRIP_ID_5
EN

回答 1

Stack Overflow用户

发布于 2018-08-02 07:33:14

一个有趣的问题。必须修复一个bug!

正如我在ORACLE中尝试的那样,您将需要转换为spark.sql。但spark.sql支持WITH子句。此外,我没有使用日期字符串,因为我只是使用数字来表示时间,这是一个相当晚的事实,所以你需要看看这一点。

但这里是您可以适应的SQL。

with X as (select device, time_asc, trip_id from trips where trip_id is not null)
select Y.TRIP_ID, Y.DEVICE, Y.TIME_ASC FROM (
select T1.TIME_ASC, T1.DEVICE, X.TRIP_ID, X.TIME_ASC AS TIME_ASC_COMPARE
      ,RANK() OVER (PARTITION BY T1.TIME_ASC, T1.DEVICE ORDER BY X.TIME_ASC) AS RANK_VAL       from trips T1, X
 where T1.DEVICE = X.DEVICE
   and T1.TIME_ASC <= X.TIME_ASC) Y
 where RANK_VAL = 1
 order by TRIP_ID, TIME_ASC

去掉order by,只是用来显示。

此数据作为输入:

 ('1','A',null);
 ('2','A','TRIP_01');
 ('5','A',null);
 ('6','A',null);
 ('7','A',null);
 ('23','A','TRIP_02');
 ('56','A',null);
 ('60','A','TRIP_04');
 ('8','B',null);
 ('10','B','TRIP_03');
 ('1','E',null);
 ('2','E','TRIP_05');

在我导出并获得此格式时删除引号,返回以下内容,我认为这将满足您的需要-再次请原谅格式设置:

 ('TRIP_01','A','1');
 ('TRIP_01','A','2');
 ('TRIP_02','A','5');
 ('TRIP_02','A','6');
 ('TRIP_02','A','7');
 ('TRIP_02','A','23');
 ('TRIP_03','B','8');
 ('TRIP_03','B','10');
 ('TRIP_04','A','56');
 ('TRIP_04','A','60');
 ('TRIP_05','E','1');
 ('TRIP_05','E','2');

我想知道SPARK在幕后的表现有多好。这在深夜花费了一些努力,因此寻求一些欣赏。同样令人愉快。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51624502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档