Java 按日期列出的火花组数据和该日期缺少的id的零填充数据
我有一个spark数据集,我需要按日期对数据进行分组,并在日期id不存在时对数据进行零填充。我还需要对数据集进行30天的转换,因为在原始类型数据集中,我的结束日期是30天,下面是我正在处理的示例数据集。实现这一转变的最佳方法是什么Java 按日期列出的火花组数据和该日期缺少的id的零填充数据,java,apache-spark,apache-spark-sql,apache-spark-mllib,Java,Apache Spark,Apache Spark Sql,Apache Spark Mllib,我有一个spark数据集,我需要按日期对数据进行分组,并在日期id不存在时对数据进行零填充。我还需要对数据集进行30天的转换,因为在原始类型数据集中,我的结束日期是30天,下面是我正在处理的示例数据集。实现这一转变的最佳方法是什么 val genre = sc.parallelize(List(("id1", "2016-05-01", "action",0), ("id1", "2016-05-03", "horror",
val genre = sc.parallelize(List(("id1", "2016-05-01", "action",0),
("id1", "2016-05-03", "horror",1),
("id2", "2016-05-03", "art",0),
("id2", "2016-05-04", "action",0))).
toDF("id","date","genre","score")
输出
+---+----------+------+-----+
| id| date| genre|score|
+---+----------+------+-----+
|id1|2016-05-01|action| 0|
|id1|2016-05-03|horror| 1|
|id2|2016-05-03| art| 0|
|id2|2016-05-04|action| 0|
+---+----------+------+-----+
期望输出
+---+----------+------+-----+-----------
| date| grouped |
+---+----------+------+-----+------------
|2016-05-01|[[id1,action,1],[id2,0, 0]] |
|2016-05-02|[[id1,0,0],[id2,0, 0]] |
|2016-05-03|[[id1,horror,1],[id2,art,0]]|
|2016-05-04|[[id1,0,0],[id2,action, 0]] |
+---+----------+------+-----+-----------
只是一个警告——这并不难实现,但在一般情况下,这样的结构不会扩大。它可能适用于玩具示例,但仅此而已。如果您有更多id不是id1和id2的行,该怎么办?我将有另一个100K id。我真正想了解的是如何解决这个问题。我知道这很容易用简单的java代码实现,考虑到spark驱动程序和执行程序的执行顺序,我该如何实现呢?