gpt4 book ai didi

java - 在Spark Java API中联接行数据集

转载 作者:行者123 更新时间:2023-12-02 19:56:26 24 4
gpt4 key购买 nike

我想要两个联接两个数据集DS1和DS2以获得DS3

DS1:

+---------+--------------------+-----------+------------+
|Compte | Lib |ReportDebit|ReportCredit|
+---------+--------------------+-----------+------------+
| 447105|Autres impôts, ta...| 77171.0| 0.0|
| 753000|Jetons de présenc...| 6839.0| 0.0|
| 511107|Valeurs à l’encai...| 0.0| 77171.0|
+---------+--------------------+-----------+------------+

DS2:
+---------+------------+
|Compte |SoldeBalance|
+---------+------------+
| 447105 | 992.13|
| 111111 | 35065.0|

我想要这样的DS3:
+---------+--------------------+-----------+------------+------------+
|Compte | CompteLib|ReportDebit|ReportCredit|SoldeBalance|
+---------+--------------------+-----------+------------+------------+
| 447105|Autres impôts, ta...| 77171.0| 0.0| 992.13|
| 753000|Jetons de présenc...| 6839.0 | 0.0| 0.0|
| 511107|Valeurs à l’encai...| 0.0| 77171.0| 0.0|
111111| | 0.0| 0.0| 35065.0|
+---------+--------------------+-----------+------------+------------+

有人可以指导我介绍一下示例Spark Java表达式。
提前致谢。

最佳答案

您可以通过应用完整的外部联接,然后将空值替换为所需的值来实现此目的。

import static org.apache.spark.sql.functions.*;

...

ds1.join(ds2, ds1.col("Compte").equalTo(ds2.col("Compte")), "full_outer")
.select(ds1.col("Compte").alias("Compte1"),
ds2.col("Compte").alias("Compte2"),
ds1.col("Lib"),
ds1.col("ReportDebit"),
ds1.col("ReportCredit"),
ds2.col("SoldeBalance"))
.withColumn("Compte", when(col("Compte1").isNull(), col("Compte2")).otherwise(col("Compte1")))
.drop("Compte1", "Compte2")
.na().fill(0.0, new String[] { "ReportDebit", "ReportCredit", "SoldeBalance" })
.na().fill("", new String[] { "Lib" })
.show();

输出:
+--------------------+-----------+------------+------------+------+
| Lib|ReportDebit|ReportCredit|SoldeBalance|Compte|
+--------------------+-----------+------------+------------+------+
|Valeurs à l’encai...| 0.0| 77171.0| 0.0|511107|
|Autres impôts, ta...| 77171.0| 0.0| 992.13|447105|
| | 0.0| 0.0| 35065.0|111111|
|Jetons de présenc...| 6839.0| 0.0| 0.0|753000|
+--------------------+-----------+------------+------------+------+

关于java - 在Spark Java API中联接行数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50161722/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com