pyspark RDD - левое внешнее соединение по определенному ключу - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть две таблицы 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 голосов
/ 09 апреля 2019

Если у вас есть фрейм данных, тогда для чего вы создаете 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)
0 голосов
/ 09 апреля 2019

Фреймы данных быстрее, чем 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
...