java - 根据java中的时间戳按月对spark数据集进行分组

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

我已使用 java 中的 Spark session 将表中的所有行加载到数据集中。我想获取每个月的行数。

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

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

enter image description here

最佳答案

考虑您解释问题的方式: 我尝试使用 withColumn() 创建新的月份列,以便稍后可以使用 groupBy() 月份和 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

这将为您提供如下输出:

+-----+-----+
|month|count|
+-----+-----+
|    6|    1|
|    5|    1|
|    4|    2|
+-----+-----+

希望这有帮助!!

关于java - 根据java中的时间戳按月对spark数据集进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54572969/

相关文章:

java - 大括号阻止编译

java - 如何使用 Servlet 从服务器下载文件

mysql 连接 2 列进行排序

python - Pandas - Groupby 数据框存储为数据框而不聚合

java - 将一年添加到 java.util.Calendar 时出现奇怪的结果

java - 获取 map 子图的最快方法是什么

java - 初始作业没有接受任何资源;检查您的集群 UI 以确保工作人员已注册并拥有足够的资源

java - 独立集群中的 Spark 动态分配使我的应用程序失败

java - 如何使用java在spark mllib中获取逻辑回归的p值

sql - Oracle - 按多维数据集分组 - 按不同列求和