加入时忽略火花中的情况

时间:2017-09-14 16:53:48

标签: pyspark spark-dataframe

我有一个火花数据框( 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'])

如何使连接条件不区分大小写?任何帮助将不胜感激。

2 个答案:

答案 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()


如果它解决了您的问题,请不要忘记告诉我们:)