Spark 时间函数date_format
楔子
读取json文件,但是时间
2016-10-01 15:42:46
需要进行操作。使用spark SQL提供的时间函数
demo
private static void top(SparkSession sparkSession, Dataset<Row> logDS, Dataset<Row> userDataset) {
String startTime = "2016-10-01";
String endTime = "2016-11-01";
System.out.println("--统计特定时间内访问最多的Top5--");
logDS.createOrReplaceTempView("tmp_log");
// sparkSession.sql("select date_format(time, 'yyyy-MM-dd') from
// tmp_log").show();
userDataset.createOrReplaceTempView("tmp_user");
long count = logDS.filter("date_format(time, 'yyyy-MM-dd') >= " + startTime + " and date_format(time, 'yyyy-MM-dd') <=" + endTime).count();
System.out.println("字符加单引号的结果" + count);
long count2 = logDS.filter("date_format(time, 'yyyy-MM-dd') >= '" + startTime + "' and date_format(time, 'yyyy-MM-dd') <='" + endTime + "'").count();
System.out.println("字符加单引号的结果" + count);
System.out.println("字符不加单引号的结果" + count2);
// 字符加单引号的结果0
// 字符不加单引号的结果5973
}
需要注意的是使用比较时 是否加单引号 对结果影响很大,不加会影响结果 。如下图