Apache spark pyspark RDD-特定键上的左外连接

Apache spark pyspark RDD-特定键上的左外连接,apache-spark,pyspark,left-join,rdd,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() 数据帧比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()

数据帧比rdd快,而且您已经有了数据帧,因此我建议:

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

如果您有dataframe,那么为什么要为此创建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)

我认为RDD比dataframe快得多。这里是参考:@user1584253这篇文章是3年前在spark 1.6dataframes上写的,它有额外的元数据,这允许Spark在执行时运行某些优化,以及Spark在最新版本中的发展方式。建议使用dataframe,直到并且除非您有非常具体的要求,并且您认为基于rdd的代码比Spark为基于dataframe的代码创建的执行计划优化得多想要使用RDD not spark DATAFRAME进行连接RDD中的每个记录是一个元组,其中第一个条目是键。当您调用join时,它会在键上执行此操作。因此,如果要在特定列上加入,则需要映射记录,以便先加入列。如果没有详细的说明,很难解释得更详细。