scala - 小于 spark scala rdd 中日期的比较

标签 scala apache-spark hadoop bigdata

我想打印1991年以前入职的员工数据,下面是我的示例数据:

69062,FRANK,ANALYST,5646,1991-12-03,3100.00,,2001
63679,SANDRINE,CLERK,69062,1990-12-18,900.00,,2001 

用于加载数据的初始 RDD:

val rdd=sc.textFile("file:////home/hduser/Desktop/Employees/employees.txt").filter(p=>{p!=null && p.trim.length>0})

用于将字符串列转换为日期列的 UDF:

def convertStringToDate(s: String): Date = {
        val dateFormat = new SimpleDateFormat("yyyy-MM-dd")
        dateFormat.parse(s)
    }

将每一列映射到它的数据类型:

val dateRdd=rdd.map(_.split(",")).map(p=>(if(p(0).length >0 )p(0).toLong else 0L,p(1),p(2),if(p(3).length > 0)p(3).toLong else 0L,convertStringToDate(p(4)),if(p(5).length >0)p(5).toDouble else 0D,if(p(6).length > 0)p(6).toDouble else 0D,if(p(7).length> 0)p(7).toInt else 0))  

现在我得到如下元组中的数据:

(69062,FRANK,ANALYST,5646,Tue Dec 03 00:00:00 IST 1991,3100.0,0.0,2001)
(63679,SANDRINE,CLERK,69062,Tue Dec 18 00:00:00 IST 1990,900.0,0.0,2001)

现在当我执行命令时出现以下错误:

scala> dateRdd.map(p=>(!(p._5.before("1991")))).foreach(println)
<console>:36: error: type mismatch;
 found   : String("1991")
 required: java.util.Date
              dateRdd.map(p=>(!(p._5.before("1991")))).foreach(println)

                                        ^

那么我哪里出错了???

最佳答案

由于您使用的是 rdd 而不是 df,并且您的日期字符串具有简单的日期检查功能,因此对于 RDD,可以使用以下简单的方法:

val rdd = sc.parallelize(Seq((69062,"FRANK","ANALYST",5646, "1991-12-03",3100.00,2001),(63679,"SANDRINE","CLERK",69062,"1990-12-18",900.00,2001)))
rdd.filter(p=>(p._5 < "1991-01-01")).foreach(println)

关于scala - 小于 spark scala rdd 中日期的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52610767/

相关文章:

list - Scala:为什么不赞成使用remove来支持remove?

scala - 使用带有严格 Unmarshaller 的 akka-http 客户端 `entity.discardEntityBytes`

scala - 作为执行程序和线程数量的函数,spark中的分区数量是多少?

apache-spark - 如果我显式传递模式,是否需要在带有 parquet 的 Spark 中使用 "mergeSchema"选项?

hadoop - Hadoop 2:为什么每个映射或归约任务都有两个Linux进程?

hadoop - 通过Apache Pig中的示例消除运算符用法的歧义

scala - Intellij 不提供弹出窗口或菜单选项来运行由 Intellij 本身创建的 scalatest

Scala 警告匹配可能并不详尽

python - pyspark 中的等价概率函数

java - 编译 Hadoop native - 在 Maven 插件中发现错误