这两个数据框查询计划中的任何人都可以帮助我了解哪种效果更好。
1个数据框:
val df = data.filter((col("regionId") < 0))
val dfn = data.filter(not(col("regionId") < 0))
val dff = df.union(dfn)
Optimized Plan:
Union
:- Project [regionId#3044L]
: +- Filter (isnotnull(regionId#3044L) && (regionId#3044L < 0))
: +- Relation[regionId#3044Ltimestamp#3046L] parquet
+- Project [regionId#3044L]
+- Filter (isnotnull(regionId#3044L) && (regionId#3044L >= 0))
+- Relation[regionId#3044Ltimestamp#3046L] parquet
2个数据框:
val df = data.filter((col("regionId") < 0))
val dfn = data.except(df)
val dff = df.union(dfn)
Optimized Plan:
Union
:- Project [regionId#3044L]
: +- Filter (isnotnull(regionId#3044L) && (regionId#3044L < 0))
: +- Relation[regionId#3044Ltimestamp#3046L] parquet
+- Aggregate [regionId#3044L], [regionId#3044L]
+- Join LeftAnti, (regionId#3044L <=> regionId#3174L)
:- Project [regionId#3044L]
: +- Relation[regionId#3044L,timestamp#3046L] parquet
+- Project [regionId#3174L]
+- Filter (isnotnull(regionId#3174L) && (regionId#3174L < 0))
+- Relation[regionId#3174L,timestamp#3176L] parquet
答案 0 :(得分:0)
前一个。
因此,这两个过滤器显然是赢家。