как работает функция 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'