Pyspark 连接时忽略spark中的大小写

Pyspark 连接时忽略spark中的大小写,pyspark,spark-dataframe,Pyspark,Spark Dataframe,我有一个spark数据框(input\u dataframe\u 1),该数据框中的数据如下所示: id value 1 Ab 2 Ai 3 aB name value x ab y iA z aB 我有另一个spark数据框(input\u data

我有一个spark数据框(input\u dataframe\u 1),该数据框中的数据如下所示:

id              value
 1                Ab
 2                Ai
 3                aB
name              value
 x                ab
 y                iA
 z                aB
我有另一个spark数据框(input\u dataframe\u 2),此数据框中的数据如下所示:

id              value
 1                Ab
 2                Ai
 3                aB
name              value
 x                ab
 y                iA
 z                aB
我希望连接dataframe和连接条件都不区分大小写,下面是我正在使用的连接条件:

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

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

希望您正在进行内部连接,请找到以下解决方案 //创建输入数据帧1

val inputDF1=spark.createDataFrame(Seq((“1”,“Ab”),(“2”,“Ai”),(“3”,“Ab”))。使用列重命名(“\u 1”,“id”)。使用列重命名(“\u 2”,“value”)

//创建输入数据帧2

val inputDF2=spark.createDataFrame(Seq((“x”,“ab”),(“y”,“iA”),(“z”,“ab”))。带列重命名(“_1”,“id”)。带列重命名(“_2”,“value”)

//在较低(值)列上连接两个数据帧

inputDF1.join(inputDF2,lower(inputDF1.col(“value”))==lower(inputDF2.col(“value”))).show

+---+-----+---+-----+ |id |值| id |值| +---+-----+---+-----+ |1 | Ab | z | Ab| |1 | Ab | x | Ab| |3 | aB | z | aB| |3 | aB | x | aB|
+---+-----+---+-----+

希望您正在进行内部联接,请找到以下解决方案 //创建输入数据帧1

val inputDF1=spark.createDataFrame(Seq((“1”,“Ab”),(“2”,“Ai”),(“3”,“Ab”))。使用列重命名(“\u 1”,“id”)。使用列重命名(“\u 2”,“value”)

//创建输入数据帧2

val inputDF2=spark.createDataFrame(Seq((“x”,“ab”),(“y”,“iA”),(“z”,“ab”))。带列重命名(“_1”,“id”)。带列重命名(“_2”,“value”)

//在较低(值)列上连接两个数据帧

inputDF1.join(inputDF2,lower(inputDF1.col(“value”))==lower(inputDF2.col(“value”))).show

+---+-----+---+-----+ |id |值| id |值| +---+-----+---+-----+ |1 | Ab | z | Ab| |1 | Ab | x | Ab| |3 | aB | z | aB| |3 | aB | x | aB| +---+-----+---+-----+希望这能有所帮助

从pyspark.sql.functions导入
#样本数据
输入数据帧1=sc.parallelize([(1,'Ab'),(2,'Ai'),(3,'Ab'))).toDF([“id”,“value”])
输入数据帧2=sc.parallelize([('x','ab'),('y','iA'),('z','ab'))).toDF([“名称”,“值”])
输出=输入\数据帧\ 1\
join(input_dataframe_2,lower(input_dataframe_1.value)==lower(input_dataframe_2.value))\
drop(输入\数据帧\ 2.值)
output.show()

别忘了告诉我们它是否解决了您的问题:)

希望这有帮助

从pyspark.sql.functions导入
#样本数据
输入数据帧1=sc.parallelize([(1,'Ab'),(2,'Ai'),(3,'Ab'))).toDF([“id”,“value”])
输入数据帧2=sc.parallelize([('x','ab'),('y','iA'),('z','ab'))).toDF([“名称”,“值”])
输出=输入\数据帧\ 1\
join(input_dataframe_2,lower(input_dataframe_1.value)==lower(input_dataframe_2.value))\
drop(输入\数据帧\ 2.值)
output.show()


别忘了告诉我们它是否解决了您的问题:)

您的答案是用
scala
写的。OP将问题标记为
#pyspark
scala
版本可能是有益的,但是基于
python
的版本可能更能满足OP的需要。。但是,Spark数据帧操作应该独立于编程语言。您的答案是用
scala
编写的。OP将问题标记为
#pyspark
scala
版本可能是有益的,但是基于
python
的版本可能更能满足OP的需要。。但是,Spark数据帧操作应该独立于编程语言。@rajatsaxena如果解决了您的问题,请不要忘记:)@rajatsaxena如果解决了您的问题,请不要忘记:)