我有一个火花数据框( input_dataframe_1 ),此数据框中的数据如下所示:
id value
1 Ab
2 Ai
3 aB
我有另一个火花数据框( input_dataframe_2 ),此数据框中的数据如下所示:
name value
x ab
y iA
z aB
我想加入数据帧和连接条件应该不区分大小写,下面是我正在使用的连接条件:
output = input_dataframe_1.join(input_dataframe_2,['value'])
如何使连接条件不区分大小写?任何帮助将不胜感激。
答案 0 :(得分:1)
期待您正在进行内部联接,请找到以下解决方案 //创建输入数据帧1
val inputDF1 = spark.createDataFrame(Seq((“1”,“Ab”),(“2”,“Ai”),(“3”,“aB”)))。withColumnRenamed(“_ 1”, “ID”)。withColumnRenamed( “_ 2”, “值”)
//创建输入数据框2
val inputDF2 = spark.createDataFrame(Seq((“x”,“ab”),(“y”,“iA”),(“z”,“aB”)))。withColumnRenamed(“_ 1”, “ID”)。withColumnRenamed( “_ 2”, “值”)
//连接较低(值)列
上的两个数据帧inputDF1.join(inputDF2,低级(inputDF1.col( “值”))===低级(inputDF2.col( “值”)))。显示出
+ --- + ----- + + --- ----- + | ID |值| ID |值| + --- + ----- + --- + ----- + | 1 | AB | ž| AB | | 1 | AB | X | AB | | 3 | AB | ž| AB | | 3 | AB | X | AB | + --- + ----- + + --- ----- +
答案 1 :(得分:1)
希望这有帮助!
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()
如果它解决了您的问题,请不要忘记告诉我们:)