为什么使用混合用例时会有不同的行为,而Spark3.2中使用的是相同的用例

eni9jsuy  于 2023-04-07  发布在  Apache
关注(0)|答案(1)|浏览(94)

我正在spark3.2中运行一个简单的查询

val df1 = sc.parallelize(List((1,2,3,4,5),(1,2,3,4,5))).toDF("id","col2","col3","col4", "col5")
val op_cols_same_case = List("id","col2","col3","col4", "col5", "id")
val df2 = df1.select(op_cols_same_case.head, op_cols_same_case.tail: _*)
df2.select("id").show()

上面的查询返回结果,但是当我混合大小写时,它给出了异常

val df1 = sc.parallelize(List((1,2,3,4,5),(1,2,3,4,5))).toDF("id","col2","col3","col4", "col5")
val op_cols_diff_case = List("id","col2","col3","col4", "col5", "ID")
val df2 = df1.select(op_cols_diff_case.head, op_cols_diff_case.tail: _*)
df2.select("id").show()

在我的测试用例中,Sensitive是default(false)。
我希望两个查询都返回结果。或者两个查询都失败。
为什么一个失败了,另一个却没有?

wz3gfoph

wz3gfoph1#

我们认为这是一个问题或非问题的基础上,似乎合乎逻辑的一个。有一个很长的线程this pull request,其中一些人认为这是正确的,而有些人认为这是错误的。
但是拉取请求的改变确实使行为保持一致。

相关问题