2015-10-14 42 views
1

我从一个输入文件中创建一个RDD一个或多个选项卡的RDD的拆分记录,它看起来像这样:PySpark - 由

[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。当有人想根据一个或多个选项卡分割字符串时,但在尝试分割RDD记录时,这些解决方案似乎不适用于PySpark的上下文。

回答

2

我并不很清楚你意思一套RDDS的,但它看起来像你所需要的就是一个简单的正则表达式:

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']]