2016-09-19 35 views
0

我想跳過列表索引之外的行,即只保留與給定索引匹配的行。跳過不匹配的索引行pyspark

以下是我的數據,

12,34,5,6,7,8,....... 

23,45,657,78,34,....... 

0,2,34 

15,78,65,78,9,... 

我想提取字段x [0],X [1],X [2],X [3]也在我的數據集一些線具有更少的領域和它會拋出列表索引超出範圍,所以我想skipp具有指針< 3行我怎麼能在火花蟒蛇

這我試圖做到這一點,

def takeOnly3fields(data): 
    for row in data: 
     if not len(row) <=3: 
      return ",".join(row) 

ff = file1.map(takeOnly3fields) 
print(ff.collect()) will return NULL,NULL,NULL 
+1

您的代碼或至少是您編寫的功能將幫助我們更好:-) – thiruvenkadam

+1

如果您使用的是單維列表,並且不需要for循環,map將爲您迭代。 – thiruvenkadam

回答

1

如果數據是單維的,以下是你需要的代碼:

def takeOnly3fields(data): 
    return ",".join(data) if len(data)>3 else None 

地圖會遍歷整個數據爲您和您只需要對數據集的轉換功能。