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