apache-spark - 使用 spark 向量化一组行
问题描述
我正在尝试对一组行进行矢量化,并根据时间范围将它们分组在一起(可能是按年/月/周)
例如。
| Date | Id | some_col | data ||
|2017-05-01 | 1 | abc | 32 ||
|2017-06-01 | 1 | abc | 21 ||
|2017-07-01 | 1 | abc | 34 ||
|2018-01-01 | 1 | abc | 5 ||
|2018-02-01 | 1 | abc | 3 ||
|2018-03-01 | 1 | abc | 3 ||
|2017-05-01 | 2 | abc | 132 ||
|2017-06-01 | 2 | abc | 121 ||
|2017-07-01 | 2 | abc | 134 ||
|2018-01-01 | 2 | abc | 15 ||
|2018-02-01 | 2 | abc | 13 ||
|2018-03-01 | 2 | abc | 13 ||
我想要得到的是这样的:
| Year| Id | data ||
|2017 | 1 | [32,21,34] ||
|2017 | 2 | [132, 121, 134] ||
|2018 | 1 | [5, 3, 3] ||
|2018 | 2 | [15, 13, 13] ||
解决方案
我认为以下内容可能会对您有所帮助。
scala> val df = spark.read.option("header",true).option("sep","|").csv("test2.csv")
scala> val transformedDF = df.withColumn("year",year(col("Date")))
.groupBy(col("year"), col("Id"))
.agg(collect_list(col("data")).as("data"))
scala> transformedDF.show(false)
+----+---+---------------+
|year|Id |data |
+----+---+---------------+
|2017|1 |[32, 21, 34] |
|2017|2 |[132, 121, 134]|
|2018|2 |[15, 13, 13] |
|2018|1 |[5, 3, 3] |
+----+---+---------------+
如果它对你有帮助,请告诉我。
推荐阅读
- git - Azure 门户 - 无法为 Web 应用程序中的部署槽设置部署
- python-3.x - 如何使用 tensorflow keras 将深度重写为法线贴图代码以进行输入浴?
- excel - 将一维数组值应用于二维数组的 .NumberFormat 的代码
- c# - 单例的这种使用有意义吗
- javascript - 是否可以在声明后扩展 JavaScript 类?
- identityserver4 - 如何创建 API/IdentityServer/Blazor(服务器端)应用程序?
- php - Perl/Sed 用小写版本替换捕获组中的所有匹配项
- python - 如何打印包含“包含”的神社模板
- node.js - 在 Node.js 中创建对象是否有推荐的方法?
- mysql - 如何遍历表的列以查找空列?