我是 Spark 新手,遇到了一个问题,我已经努力解决好几天了。我还没有找到解决方案。如果能用 Spark Java 或 Scala 回答,我将不胜感激。我的
我是 Spark 新手,遇到了一个问题,我已经努力解决好几天了。我还没有找到解决方案。如果能用 Spark Java 或 Scala 回答,我将不胜感激。我的数据集如下所示。
实例 | 时间 | 电源 |
---|---|---|
Ⅰ1 | 2024-09-01-00:00:00 | 电 |
Ⅰ1 | 2024-09-01-00:15:00 | 错误 |
Ⅰ1 | 2024-09-01-00:30:00 | 错误 |
Ⅰ1 | 2024-09-01-00:45:00 | 错误 |
Ⅰ1 | 2024-09-01-01:00:00 | 电 |
Ⅰ1 | 2024-09-01-01:15:00 | 错误 |
Ⅰ1 | 2024-09-01-01:30:00 | 电池 |
Ⅰ1 | 2024-09-01-01:45:00 | 错误 |
Ⅰ1 | 2024-09-01-02:00:00 | 电池 |
现在,如果错误块下方和上方的值相同,那么我想用该值替换所有错误。此外,替换操作应通过对实例进行分区来完成。所以我的输出应该如下所示。
实例 | 时间 | 电源 |
---|---|---|
Ⅰ1 | 2024-09-01-00:00:00 | 电 |
Ⅰ1 | 2024-09-01-00:15:00 | 电 |
Ⅰ1 | 2024-09-01-00:30:00 | 电 |
Ⅰ1 | 2024-09-01-00:45:00 | 电 |
Ⅰ1 | 2024-09-01-01:00:00 | 电 |
Ⅰ1 | 2024-09-01-01:15:00 | 错误<-- 高于和低于此的值不一样,因此没有被替换 |
Ⅰ1 | 2024-09-01-01:30:00 | 电池 |
Ⅰ1 | 2024-09-01-01:45:00 | 电池 |
Ⅰ1 | 2024-09-01-02:00:00 | 电池 |
然后我想找到每个实例的每个电源的总数、最大和最小连续计数。因此从上面的输出来看应该是:电力 -> 总计数:5,最大连续:5,最小连续:5电池 -> 总计数:3,最大连续:3,最小连续:3
我无法解决第一部分,但对于第二部分(查找计数),我计划在每个实例的列表中收集 power_source,然后将其传递给 UDF 以查找计数。