【问题标题】:Between function in spark using java使用java在spark中的函数之间
【发布时间】:2020-10-04 16:37:13
【问题描述】:

我有两个数据框:

 Dataframe 1
+-----------------+-----------------+
|    hour_Entre   |   hour_Sortie   |
+-----------------+-----------------+
|      18:30:00   |     05:00:00    |
|                 |                 |
+-----------------+-----------------+
 Dataframe 2
+-----------------+
|  hour_Tracking  |            
+-----------------+
|  19:30:00       |
+-----------------+

我想使用 hour_Entre 和 hour_Sortie 之间的 hour_tracking。

我尝试了以下代码:

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>'

【问题讨论】:

  • 错误信息是正确的,&&一个布尔值和一个数据集是没有意义的。你想在这里实现什么,为什么?如果两个表中不止一行,该代码应该产生什么? checked的目的是什么?
  • 我希望如果 between 函数返回 true 则 cheched 的值变为 true

标签: java dataframe apache-spark


【解决方案1】:

如果您正在寻找时差 -

第一次创建日期差异

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))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-27
    • 2020-10-29
    • 2020-10-30
    • 2015-01-05
    • 1970-01-01
    • 2016-12-20
    • 2020-10-30
    • 1970-01-01
    相关资源
    最近更新 更多