从Java中的时间戳按月对spark数据集进行分组

时间:2019-02-07 12:05:39

标签: java apache-spark group-by cassandra apache-spark-dataset

我已经使用Java中的spark会话将表中的所有行加载到了Dataset中。我想获取每个月的行数。

我试图通过使用withColumn()创建month的新列,以便以后可以使用group_by month和count()。但是我无法从时间戳中获得月份。如何从上述数据集中找到每个月的计数?

我的示例数据集将如下所示,

enter image description here

2 个答案:

答案 0 :(得分:1)

我相信您可以使用Tuple2 <>类型

props.navigation.navigate('NewHome');

这样一来,您最终得到的地图将日期作为键,并将这些日期的计数作为值。 希望对您有帮助

答案 1 :(得分:1)

考虑您解释问题的方式: 我试图通过使用withColumn()创建month的新列,以便以后可以使用group_by month和count()。但是我无法从时间戳中获得月份。

您可以在org.apache.spark.sql.functions包中提供的静态 month()函数来查找月份,如下所示:

myDataset.withColumn("month", month(col("date"))).groupBy(col("month")).count().show();

其中col(“ date”)将带有时间戳(在以下情况下:“ yyyy-mm-dd HH:mm:ss”)。

使用的输入:

1,2019-04-07 07:24:14,0,8

2,2019-05-07 07:24:14,0,10

5,2019-06-07 07:24:14,0,6

3,2019-04-07 07:24:14,0,7

这将为您提供如下输出:

+ ----- + ----- +

|月|计数|

+ ----- + ----- +

| 6 | 1 |

| 5 | 1 |

| 4 | 2 |

+ ----- + ----- +

希望这会有所帮助!