>我有两个数据帧
- df1 有 500 列,其中一列是 id(StringType(,记录数 1000 万
- df2 有 4 列,其中一列是 id(StringType(,另外 3 列(比如 x、y、z(名称与 3 列 df1(同名,即 x、y、z(匹配,它包含 20 万条记录
我想做左连接,因此 join df 必须有 1000 万条记录和 500 列
df1.join(df2, "id", "left_outer")
它给了我错误 错误:类型不匹配:
found : String("id")
required: org.apache.spark.sql.Column
该怎么做,以及我何时尝试
它给了我org.apache.spark.sql.AnalysisException:字符串类型的连接条件"id"不是布尔值。
怎么办?
您需要提供列引用 - 如错误消息中所述。您可以通过导入spark.implicits._
并使用$
为id
列设置别名来执行此操作:
导入df1.sparkSession.implicits._ df1.join(df2, $"id", "left_outer"(