как работает функция rdd.combineByKey?

Не могу понять как работает функция rdd.combineByKey. Документацию читала, но все равно не понятно как объединить 2 rdd с разными ключами.

У меня есть 2 rdd: train, test с полями:

train = sc.textFile('/content/train.csv')
test = sc.textFile('/content/test.csv')    
train_header = train_first_row.split(',')
        [col_1, col_2, target]
test_header = test_first_row.split(',')
        [id, col_1, col_2]

Как их объединить в один rdd при помощи rdd.combineByKey не потеряв values? Пробовала сделать так как в документации по примеру,

def to_list(a):
  return [a]

def append(a, b):
  a.append(b)
  return a

def extend(a, b):
  a.extend(b)
  return a

sorted(train.combineByKey(to_list(test), append(test, train), extend(test, train)).collect())

но выходит ошибка:

AttributeError                            Traceback (most recent call last)
<ipython-input-17-ff73ced71bca> in <module>()
     17   return a
     18 
---> 19 sorted(train.combineByKey(to_list(test), append(test, train), extend(test, train)).collect())
     20 
     21 

<ipython-input-17-ff73ced71bca> in append(a, b)
     10 
     11 def append(a, b):
---> 12   a.append(b)
     13   return a
     14 

AttributeError: 'PipelinedRDD' object has no attribute 'append'

Ответы (0 шт):