我有一个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 |