apache-spark - spark如何沿一列累积执行乘法
问题描述
这是火花中的一个数据框
+------+----+---+
| Close|sell|buy|
+------+----+---+
| 314.6| 0| 1|
| 120| 1| 0|
| 192| 0| 1|
|199.46| 1| 0|
|255.05| 0| 1|
|250.52| 1| 0|
|252.53| 0| 1|
|245.32| 1| 0|
-----------------
我想要做的是:对于第一列的所有行,将它们累加,即314.6 * 120 * 192 * 199.65 ...
我想得到最终值。
解决方案
已删除的帖子几乎就在那里,但是您正在处理 Row Type 的 RDD 以便应用减少,并且拥有像 120 和 134.4 这样的数据,然后这些数据与带有 Row Type 的 AnyVal 存在问题。
我建议以下考虑到 123 和 123.5 格式:
case class Employee(first_name:String, job_type:String, salary:Double)
val dfE = spark.createDataFrame(
Seq(Employee("John", "sh_clerk", 20000),
Employee("Peter", "sh_clerk", 60000.0), Employee("Sally", "manager", 50000.0),
Employee("Cabe", "programmer", 100000.0), Employee("Bob", "accountant", 65000.0)
)
)
dfE.show(false)
dfE.printSchema()
dfE.select("salary").rdd.map(row => row.getDouble(0)).reduce(_*_)
在这种情况下,它毫无例外地返回以下内容:
res19: Double = 3.9E23
案例类更多是为了形式 - 因为 RDD 遇到了 AnyVal 问题。
推荐阅读
- swiftui - 如何将 RTF 文档合并到 SwiftUI 视图中?
- bash - 用于获取多个存在的变量的 Bash 快捷方式
- python - 使用 re 从 txt 文件制作字典
- javascript - 如何过滤来自 socket.io 的数据
- javascript - 为什么我的子类不能使用从父类继承的函数?
- c# - Unity3D:当我使用 GetStatic 时找不到字段文本或类型签名
到达 Jar android 插件中的字符串 - python - AttributeError:“PngImageFile”对象没有属性“load_seek”
- rust - 一个从切片中获取 X 元素的衬垫
- javascript - Antd动态嵌套组件中选择Form Item键盘行为问题
- react-native - 在本机反应中仅显示一次屏幕