Pyspark 连接时忽略spark中的大小写
我有一个spark数据框(input\u dataframe\u 1),该数据框中的数据如下所示: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
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如果解决了您的问题,请不要忘记:)