Я пытаюсь отфильтровать метку времени между двумя значениями, используя Spark Scala (игнорируя дату). Я пытаюсь выбрать все записи только с 9:00:00 до 11:00:00 (включая 9:00:00 и 11:00:00). Мой текущий ввод, вывод и код перечислены ниже.
Мой мыслительный процесс должен был быть в состоянии фильтровать, используя мой столбец pickupWindow, который больше или меньше моих значений.
Есть мысли?
Вход:
+----------------------+----------------------+----------+------------+------------+
|tpep_pickup_datetime |tpep_dropoff_datetime |total_amount|pickupWindow|
+----------------------+----------------------+----------+------------+------------+
|05/18/2018 09:09:29 PM|05/18/2018 09:52:53 PM|42.8 |09:09:29 |
|05/18/2018 11:00:00 PM|05/18/2018 11:09:13 PM|23.5 |11:00:00 |
|05/18/2018 02:47:21 PM|05/18/2018 03:30:00 PM|46.62 |02:47:21 |
Токовый выход:
+--------------------+---------------------+---------+------------+------------+
|tpep_pickup_datetime|tpep_dropoff_datetime|timestamp|total_amount|pickupWindow|
+--------------------+---------------------+---------+------------+------------+
+--------------------+---------------------+---------+------------+------------+
Текущий код:
stamp.withColumn("pickupWindow",date_format(to_timestamp(col("tpep_pickup_datetime"),"MM/dd/yyyy hh:mm:ss a"),"hh:mm:ss")).select("tpep_pickup_datetime","tpep_dropoff_datetime","timestamp","total_amount","pickupWindow").filter(col("pickupWindow")>="9:00:00").filter(col("pickupWindow")<="11:00:00").where($"tpep_pickup_datetime".contains("PM")).show(false)