Java Spark Умножьте все строки для столбца - PullRequest
0 голосов
/ 30 октября 2019

Для этих заданных входных данных;

|BASE_CAP_RET|BASE_INC_RET|BASE_TOT_RET|acct_cd|eff_date|id | +------------+------------+------------+----------+-------------------+--------+ |0.1 |0.2 |0.1 |acc1|2004-01-01T00:00:00|10018069| |0.2 |0.2 |0.1|acc1|2004-01-01T00:00:00|10018069| |0.3 |0.2 |0.1 |acc1|2004-01-02T00:00:00|10018069|

Как мне умножить все строки для столбца BASE_CAP_RET, BASE_INC_RET и BASE_TOT_RET?

|BASE_CAP_RET|BASE_INC_RET|BASE_TOT_RET|acct_cd|eff_date|id | +------------+------------+------------+----------+------------ |0.6 |0.8 |0.1 |acc1|2004-01-01T00:00:00|10018069|

Я могу сделать это в Scala, используя -

scala> var sec_returns = returns.withColumn("returns",explode($"returns")).select("returns.*")

scala> import org.apache.spark.sql.functions._ import org.apache.spark.sql.functions._

scala> val prod = udf((vals:Seq[Double]) => vals.reduce(_*_))

scala> var ret_columns = sec_returns.columns.filter(col => col.contains("RET")).map(p => prod(collect_list(p)))

scala> sec_returns.groupBy(col("acct_cd"),col("sec_id")).agg(ret_columns.head, ret_columns.tail: _*).show()

как мне это сделать в Java?

...