2015-10-14 47 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']]