gpt4 book ai didi

java - DataFrame 在加入条件后找不到列名

转载 作者:搜寻专家 更新时间:2023-10-30 21:10:30 26 4
gpt4 key购买 nike

在使用数据框 API 执行一个连接操作时,我遇到了类似“sql.AnalysisException:无法解析 column_name”的问题。虽然列名存在并且相同的连接操作在尝试使用 HiveContext 的 SQL 格式时工作正常。在下面的代码库中,

DataFrame df= df1
.join(df2, df1.col("MERCHANT").equalTo(df2.col("MERCHANT")))
.select(df2.col("MERCH_ID"), df1.col("MERCHANT")));

我也尝试过使用“别名”功能,但遇到了同样的问题“无法解析列名”。并抛出以下异常。

resolved attribute(s) MERCH_ID#738 missing from MERCHANT#737,MERCHANT#928,MERCH_ID#929,MER_LOC#930 in operator !Project [MERCH_ID#738,MERCHANT#737];

at org.apache.spark.sql.catalyst.analysis.CheckAnalysis$class.failAnalysis(CheckAnalysis.scala:38)

星火版本:1.6

这个问题在 Scala 和 Java Spark 中都遇到过。

在 Scala 中,使用“alias”解决了这个问题,但在 Java 中,我仍然遇到错误。

最佳答案

根据我的经验,最好避免使用 DataFrame.colDataFrame.apply 除非有必要消除歧义(别名仍然更好)。请尝试使用独立的 Column 对象:

import org.apache.spark.sql.functions;

DataFrame df= df1.alias("df1").
.join(df2.alias("df2"), functions.col("df1.MERCHANT").equalTo(functions.col("df2.MERCHANT")))
.select(functions.col("df2.MERCH_ID"), functions.col("df2.MERCHANT")));

关于java - DataFrame 在加入条件后找不到列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45882750/

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