Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按日期列出的火花组数据和该日期缺少的id的零填充数据_Java_Apache Spark_Apache Spark Sql_Apache Spark Mllib - Fatal编程技术网

Java 按日期列出的火花组数据和该日期缺少的id的零填充数据

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",

我有一个spark数据集,我需要按日期对数据进行分组,并在日期id不存在时对数据进行零填充。我还需要对数据集进行30天的转换,因为在原始类型数据集中,我的结束日期是30天,下面是我正在处理的示例数据集。实现这一转变的最佳方法是什么

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驱动程序和执行程序的执行顺序,我该如何实现呢?