pyspark RDD-特定键上的左外部联接

时间:2019-04-09 15:05:21

标签: apache-spark pyspark left-join rdd

我有两个具有数百列的表A和B。我试图在两个表上应用左外部联接,但它们都有不同的键。 我在B中创建了一个与A相同的键的新列。然后能够应用左外部联接。但是,如果无法使列名保持一致,如何连接两个表?

这是我尝试过的:

a = spark.table('a').rdd
a = spark.table('a')
b = b.withColumn("acct_id",col("id"))
b = b.rdd

a.leftOuterJoin(b).collect()

2 个答案:

答案 0 :(得分:0)

DataFrame比rdd快,而且您已经有了Dataframe,所以我很高兴:

a = spark.table('a')
b = spark.table('b').withColumn("acct_id",col("id"))

result = pd.merge(a, b, left_on='id', right_on='acct_id', how='left').rdd

答案 1 :(得分:0)

如果您有数据框,那么为什么要为此创建rdd,有什么特殊需要吗?

在数据框上尝试以下命令-

a.join(b,  a.column_name==b.column_name, 'left').show()

这里有一些命令可用于调查数据框

##Get column names of dataframe
a.columns

##Get column names with their datatype of dataframe
a.dtypes

##What is the type of object (eg. dataframe, rdd etc.)
type(a)