2016-09-19 53 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 

地图会遍历整个数据为您和您只需要对数据集的转换功能。