使用java实现spark中的interween函数
我有两个数据帧:使用java实现spark中的interween函数,java,dataframe,apache-spark,Java,Dataframe,Apache Spark,我有两个数据帧: Dataframe 1 +-----------------+-----------------+ | hour_Entre | hour_Sortie | +-----------------+-----------------+ | 18:30:00 | 05:00:00 | | | | +-----------------+-----------------+
Dataframe 1
+-----------------+-----------------+
| hour_Entre | hour_Sortie |
+-----------------+-----------------+
| 18:30:00 | 05:00:00 |
| | |
+-----------------+-----------------+
Dataframe 2
+-----------------+
| hour_Tracking |
+-----------------+
| 19:30:00 |
+-----------------+
我想在进站时间和出动时间之间进行小时追踪
我尝试了以下代码:
boolean checked = true;
try{
if(df1.select(col("heureSortie")) != null && df1.select(col("heureEntre")) !=null){
checked = checked && df2.select(col("dateTracking_hour_minute").between(df1.select(col("heureSortie")),df1.select(col("heureEntre"))));
}
} catch (Exception e) {
e.printStackTrace();
}
但我得到了这个错误:
Operator && cannot be applied to boolean , 'org.apache.spark.sql.Dataset<org.apache.spark.sql.Row>'
运算符&&不能应用于布尔值“org.apache.spark.sql.Dataset”
以防您查找时差-
第一次创建日期差异
from pyspark.sql import functions as F
df = df.withColumn('date_diff', F.datediff(F.to_date(df.hour_Entre), F.to_date(df.hour_Sortie)))
然后从中计算小时差-
df = df.withColumn('hours_diff', (df.date_diff*24) +
F.hour(df.hour_Entre) - F.hour(df.hour_Sortie))
错误消息是正确的,使用&&布尔值和数据集是没有意义的。你想在这里实现什么?为什么?如果两个表中都有不止一行,那么代码应该生成什么?检查
的目的是什么?
?我希望如果between函数返回true,cheched的值变为true