Групповой набор данных по месяцам с отметкой времени в java - PullRequest
0 голосов
/ 07 февраля 2019

Я загрузил все строки из таблицы в набор данных, используя сеанс spark в Java.Я хочу получить количество строк в каждом месяце.

Я попытался создать новый столбец месяца с помощью withColumn (), чтобы позже я мог использовать group_by month и count ().Но я не могу получить месяц от отметки времени.Как найти число в каждом месяце из указанного набора данных?

Мой образец набора данных будет выглядеть следующим образом:

enter image description here

Ответы [ 2 ]

0 голосов
/ 07 апреля 2019

Учитывая то, как вы объяснили свою проблему: Я попытался создать новый столбец месяца с помощью withColumn (), чтобы позже я мог использовать group_by month и count ().Но я не могу получить месяц из отметки времени.

Вы можете использовать статическую функцию month () , предоставленную в пакете org.apache.spark.sql.functions, чтобы найтимесяц, как показано ниже:

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

, где col («дата») будет иметь метку времени (в нижнем случае: «гггг-мм-дд ЧЧ: мм: сс»).

Используемый вход:

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 |

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

Надеюсь, это поможет !!

0 голосов
/ 07 февраля 2019

Я полагаю, что вы можете использовать Tuple2 <> type

Map<Date, Integer> = myDataSetRDD.map(x -> new Tuple2<Date, Integer>(x.getDate(), 1))
            .reduceByKey((x, v) -> x + v)
            .collectAsMap();

Таким образом, вы получите карту с ключами в виде дат и подсчетом этих дат в качестве значений.Я надеюсь, что это помогает

...