我有一个Scala Spark* 框架,其模式为schema:
root
|-- passengerId: string (nullable = true)
|-- travelHist: array (nullable = true)
| |-- element: integer (containsNull = true)
我想遍历数组元素,找到1和2之间0值出现的最大次数。
| 企业ID|旅行历史|
| --|--|
| 1 |1,0,0,0,0,2,1,0,0,0,0,0,0,0,2,1,0|
| 2 |0,0,0,0,0,0,0,0,2,1,0,0,0,0,0,0,0,0|
| 3 |0,0,0,2,1,0,2,1|
上述记录的输出应如下所示:
| 企业ID| maxStreak|
| --|--|
| 1 | 7 |
| 2 | 3 |
| 3 | 1 |
假设数组中元素的数量不超过50个值,那么找到这样一个区间的最**有效的方法是什么?
2条答案
按热度按时间yqkkidmi1#
让我们做一些模式匹配
sz81bmfz2#
这里有一个在pyspark中使用scala UDF的解决方案。您可以在以下存储库中找到pyspark脚本中使用的UDF和release jar的代码。
https://github.com/dineshdharme/pyspark-native-udfs
scala UDF的代码如下。
下面是使用上述UDF的pyspark代码。
输出量: