преобразование rdd для получения кортежей k-грамм в pyspark - PullRequest
0 голосов
/ 14 февраля 2019

Возьмите предложение: «Это искра апача».Я хочу иметь возможность преобразовывать каждое слово в список кортежей, если они находятся на расстоянии k.Пример: k = 2, я должен получить [(apache, this), (apache, is)] для слова apache.Аналогично для is, spark и т. Д.

Сначала я использую zipWithIndex для rdd, а затем в функции преобразования вызываю цикл от 1 до k после текущего слова.Но я не знаю, как получить слово по какому-то индексу, скажем, i-2, где i - это индекс моего текущего слова.

rdd.zipWithIndex().flatMap(lambda xi: func(xi,n))
def func(xi, n):
    x,i = xi
    l=[]
    for j in range(n):
        #Create tuple (word at i-j, x) but how
...