PySpark — разделить записи RDD на одну или несколько вкладок

Я создал RDD из входного файла, который выглядит так:

[u'$, Claw\t\t\t"OnCreativity" (2012)  [Himself]']
[u'$, Homo\t\t\tNykytaiteen museo (1986)  [Himself]  <25>\n\t\t\tSuuri illusioni (1985)  [Guests]  <22>']
[u'$, Steve\t\tE.R. Sluts (2003) (V)  <12>']

Каждую запись в этом RDD легко разделить на основе символа табуляции '\t', но я хотел бы получить каждую запись, разделенную на основе одной или нескольких вкладок.

Я пробовал обычные способы сделать это с Python, например. когда кто-то хочет разделить строку на основе одной или нескольких вкладок, но эти решения, похоже, не работают в контексте PySpark при попытке разделить запись RDD.


person nikos    schedule 14.10.2015    source источник


Ответы (1)


Я не совсем уверен, что вы подразумеваете под набором RDD, но похоже, что здесь вам нужно простое регулярное выражение:

import re
pattern = re.compile("\t+")

rdd = sc.parallelize([
    u"foo\t\t\t\tbar",
    u"123\t\t\t456\t\t789\t0"
])

rdd.map(lambda x: pattern.split(x)).collect()

## [[u'foo', u'bar'], [u'123', u'456', u'789', u'0']]
person zero323    schedule 14.10.2015