加入时忽略火花中的案例



我有一个spark dataframe( input_dataframe_1 ),此数据框中的数据如下:

id              value
 1                Ab
 2                Ai
 3                aB

我有另一个Spark DataFrame( input_dataframe_2 ),此数据帧中的数据如下:

name              value
 x                ab
 y                iA
 z                aB

我想加入两个数据框和加入条件,应该不敏感,以下是我正在使用的联接条件:

output = input_dataframe_1.join(input_dataframe_2,['value'])

如何使加入条件案例不敏感?

from pyspark.sql.functions import lower
#sample data
input_dataframe_1 = sc.parallelize([(1, 'Ab'), (2, 'Ai'), (3, 'aB')]).toDF(["id", "value"])
input_dataframe_2 = sc.parallelize([('x', 'ab'), ('y', 'iA'), ('z', 'aB')]).toDF(["name", "value"])
output = input_dataframe_1.
    join(input_dataframe_2, lower(input_dataframe_1.value)==lower(input_dataframe_2.value)).
    drop(input_dataframe_2.value)
output.show()

期望您正在进行内部连接,在下面找到:

创建输入数据帧1

val inputDF1 = spark.createDataFrame(Seq(("1","Ab"),("2","Ai"),("3","aB"))).withColumnRenamed("_1","id").withColumnRenamed("_2","value")

创建输入数据帧2

val inputDF2 = spark.createDataFrame(Seq(("x","ab"),("y","iA"),("z","aB"))).withColumnRenamed("_1","id").withColumnRenamed("_2","value")

在较低(值)列上加入两个数据帧

inputDF1.join(inputDF2,lower(inputDF1.col("value"))===lower(inputDF2.col("value"))).show
id value id value
1 AB z AB
1 AB x AB
3 AB z AB
3 AB x AB

相关内容

  • 没有找到相关文章