基于当前Dataframe作为计数器在spark数据框中创建新列

时间:2017-11-02 18:38:03

标签: scala apache-spark spark-dataframe

(编辑DF以更清楚地提出问题)使用Spark 2.2.0

我是Spark和Scala编程的新手,我试图查看之前发布的问题。所有人似乎都在寻找我正在寻找的东西,但仍然没有解决我的问题。非常感谢任何帮助

我有一个如下所示的DataFrame。

+------------------+--------------------+
|max(trip_audit_id)|max(trip_seq_end_no)|
+------------------+--------------------+
|                 1|                  23|
+------------------+--------------------+

我有另一个DF,如下面

+---------+---------+------+-------------------+
|CompanyId|VehicleId| Event|          date_time|
+---------+---------+------+-------------------+
|       83|   177010|   100|2017-08-03 2:00 AM|
|       83|   177010|800000|2017-08-03 2:30 AM|
|       83|   177010|   100|2017-08-03 3:00 AM|
|       84|   345678|   100|2017-08-03 3:20 AM|
|       84|   345678|800000|2017-08-03 4:00 AM|
|       83|   177010|800000|2017-08-03 9:00 AM|
|       83|   177010|   100|2017-08-04 2:00 AM|
|       83|   177666|800000|2017-08-04 2:30 AM|
+---------+---------+------+-------------------+

我需要获取第一个数据帧的max(trip_seq_end_no)并在我的第二个DF中创建一个新列作为运行序列号。另外,我需要将事件= 800000的日期时间戳记放在与事件= 100相同的行中。因此,我的结果Dataframe理想情况下应如下所示。

+---------+---------+-----+-------------------+-----+-------------------+
|CompanyId|VehicleId|Event|      100_date_time|SeqID|   800000_date_time|
+---------+---------+-----+-------------------+-----+-------------------+
|       83|   177010|  100|2017-08-03 2:00 AM|    24| 2017-08-03 2:30 AM|
|       83|   177010|  100|2017-08-03 3:00 AM|    25| 2017-08-03 9:00 AM|
|       84|   345678|  100|2017-08-03 3:20 AM|    26| 2017-08-03 4:00 AM|
|       83|   177010|  100|2017-08-04 2:00 AM|    27| Null              |
|       83|   177666|  100|           NULL   |    28| 2017-08-04 2:30 AM|
+---------+---------+-----+-------------------+-----+-------------------+

请帮忙。

谢谢,

0 个答案:

没有答案