scala - 移至 spark 3.0.1 后,“除外”功能无法按预期工作
问题描述
我最近从 spark 2.4 迁移到 spark 3.0.1,之后,我面临一个问题,即“除外”功能无法按预期工作。这是我正在使用的两个数据帧的输出 -
expected_df.show(false)
+--------+------------------------------------+
|duration|regardingobjectid |
+--------+------------------------------------+
|1730.0 |9cd27e8e-061d-435b-89bf-a0ad2c2b11f3|
|1142.5 |509c2aaf-75a7-492d-9a71-35d207617097|
|1082.5 |a75eb211-de50-429f-bc16-1778938701cb|
|1127.5 |9457eb9e-f207-4ba6-a268-eb6b3a4d268d|
|1400.0 |8506bd67-9e00-440b-9b36-ffbbf4472c15|
|7.5 |568b9d9b-a4ac-4dee-80b2-9db989d9f9e4|
+--------+------------------------------------+
actual_df.show(false)
+--------+------------------------------------+
|duration|regardingobjectid |
+--------+------------------------------------+
|1082.5 |a75eb211-de50-429f-bc16-1778938701cb|
|1127.5 |9457eb9e-f207-4ba6-a268-eb6b3a4d268d|
|1142.5 |509c2aaf-75a7-492d-9a71-35d207617097|
|1400.0 |8506bd67-9e00-440b-9b36-ffbbf4472c15|
|7.5 |568b9d9b-a4ac-4dee-80b2-9db989d9f9e4|
|1730.0 |9cd27e8e-061d-435b-89bf-a0ad2c2b11f3|
+--------+------------------------------------+
从上面的输出可以看出,上述数据帧中的数据是相同的。当我使用 except 函数来查找这些数据帧之间的差异时,这是我得到的输出 -
actual_df.except(expected_df).show(false)
+--------+-----------------+
|duration|regardingobjectid|
+--------+-----------------+
+--------+-----------------+
expected_df.except(actual_df).show(false)
+--------+------------------------------------+
|duration|regardingobjectid |
+--------+------------------------------------+
|1082.5 |a75eb211-de50-429f-bc16-1778938701cb|
|1127.5 |9457eb9e-f207-4ba6-a268-eb6b3a4d268d|
|1142.5 |509c2aaf-75a7-492d-9a71-35d207617097|
|1400.0 |8506bd67-9e00-440b-9b36-ffbbf4472c15|
|1730.0 |9cd27e8e-061d-435b-89bf-a0ad2c2b11f3|
+--------+------------------------------------+
在第一种情况下,except 的输出正确地为空,但在第二种情况下,它只删除一行并保留其他行。
相同的代码在 Spark 2.4 上运行得非常好。
我使用“printSchema”验证了两个数据帧的数据类型相同。
还验证了当我将上述数据帧转换为 RDD 时,减法方法工作正常。
关于“除外”功能是否有行为变化,我可能在这里遗漏了?
解决方案
推荐阅读
- python - return int(value) ValueError: int() 以 10 为底的无效文字:'Umi Falafel'
- r - 使用 Dockerfile 的 R 并行计算和 Shiny Server
- python-3.x - 确定两点是否彼此最接近的最快方法
- tensorflow - RuntimeError:无法从输入流中解析字典
- mysql - 如何修复“ DriverManager.getConnection(connectionURL, UN, PW); ”上的错误?
- python - 如何将抓取的数据正确存储在项目对象中并将每个集合保存为 1 个 csv 文件?
- user-interface - 如何在 Flutter 中重新创建 Facebook Messenger 渐变效果
- javascript - cURL 变量为空
- python - 熊猫日期时间:加载到熊猫数据框时的年份格式问题
- ios - 即使在调试中我是在被传递之前设置的 var ,传递的数据模型也会以 nil 的形式出现