我有一个表格,如下所示:
+---------------+------+
|id | value|
+---------------+------+
| 1|118.0|
| 2|109.0|
| 3|113.0|
| 4| 82.0|
| 5| 60.0|
| 6|111.0|
| 7|107.0|
| 8| 84.0|
| 9| 91.0|
| 10|118.0|
+---------------+------+
我想将值聚合或分组到一个范围内,如
0,10,20,30,40,...80,90,100,110,120
。我该如何在SQL或更具体地说Spark SQL中执行此操作?目前我使用了一个与范围进行连接的lateral view join,但这似乎相当笨拙/低效。
Quantile discretized并不是我想要的,而是使用此范围的CUT。
编辑 https://github.com/collectivemedia/spark-ext/blob/master/sparkext-mllib/src/main/scala/org/apache/spark/ml/feature/Binning.scala可以执行动态分箱,但我更喜欢使用指定的范围。
org.apache.spark.ml.feature.Bucketizer
接受一个明确提供的分割点数组。然后你就可以在输出列上进行分组。 - Hristo Iliev