spark连接Dataframe

wgx48brx  于 2021-05-29  发布在  Spark
关注(0)|答案(1)|浏览(360)

我有两个Dataframedf1和df2。我将根据列加入df1和df2 col1 以及 col2 . 但是col1的数据类型是 stringdf1 col2的类型是 intdf2 . 当我试着像下面这样加入的时候, val df3 = df1.join(df2,df1("col1") === df2("col2"),inner).select(df2("col2")) 联接不起作用,返回空数据类型。有没有可能在不改变电源类型的情况下获得正确的输出 col2df2

vwkv1x7d

vwkv1x7d1#

val dDF1 = List("1", "2", "3").toDF("col1")
  val dDF2 = List(1, 2).toDF("col2")

  val res1DF = dDF1.join(dDF2, dDF1.col("col1") === dDF2.col("col2").cast("string"), "inner")
      .select(dDF2.col("col2"))
  res1DF.printSchema()
  res1DF.show(false)
  //      root
  //      |-- col2: integer (nullable = false)
  //
  //      +----+
  //      |col2|
  //      +----+
  //      |1   |
  //      |2   |
  //      +----+

获取架构Dataframe

val sch1 = dDF1.schema
sch1: org.apache.spark.sql.types.StructType = StructType(StructField(col1,StringType,true))
// public StructField(String name,
//               DataType dataType,
//               boolean nullable,
//               Metadata metadata)

相关问题