在特定日期Spark之后过滤

时间:2015-08-12 14:31:06

标签: scala apache-spark

我试图在spark中的特定日期之后进行过滤我有以下RDD,我有一个包含2个字符串的数组,第一个是Date,下一个是Path,我想检查一下Path已经改变了什么在特定日期之后:

val cleanRDD = oivRDD.map(x => (x(5), x(7)))
  

res16:Array [(String,String)] =   阵列(   (2015-06-24,/),(2015-07-17,/ cdh),(2015-06-26,/ datameer),   (2015-06-24,/ devl),(2015-08-11,/ dqa),(2015-03-12,/ lake),   (2015年2月13日,/ OSA))

我正在使用Java的SimpleDateFormt:

val sampleDate = new SimpleDateFormat("yyyy-MM-dd")
val filterRDD = cleanRDD.filter(x => dateCompare(x))

我的日期比较:

  def dateCompare(input:(String, String)): Boolean = {
    val date1 = sampleDate.format(input._1)
    val date2 = sampleDate.parse(date1)
    val date3 = sampleDate.parse("2015-07-01")
    if (date2.compareTo(date3) > 0)  true
    else
      false
  }

我收到以下错误:

  

15/08/12 10:21:16 WARN TaskSetManager:阶段7.0中丢失的任务0.0(TID   10,edhpdn2128.kdc.capitalone.com):   java.lang.IllegalArgumentException:无法将给定的Object格式化为   日期

1 个答案:

答案 0 :(得分:1)

使用新的数据框架框架,它的有效表达式如下:

dfLogging.filter(dfLogging("when") >= "2015-01-01")

该列的时间戳类型:

scala> dfLogging.printSchema()
root
 |-- id: long (nullable = true)
 |-- when: timestamp (nullable = true)
 |-- ...

此语法对Scala有效,但对于Java和Pyhton

应该类似