2016-07-21 3 views
0

値が1および0のフィールドを含むCSVファイルがあります。 pysparkの使用特定のフィールドに1の値だけを取り込みたいと思います。フィールドを変換すると、それらはintに変換されます。 ifステートメントを使用して値が1であるかどうかを確認すると、None1の多くが返されます。なぜこの問題がありますか?私のcsvファイルに値10だけが含まれていることを100%確信していますか?RDDpipelineのint値を比較すると、int値とnone値の両方が得られるのはなぜですか?

def vehA(line): 
    fields = line.split(",") 
    ddsA = int(fields[28]) 
    ddsB = int(fields[52]) 

    if ddsA == 1: 
    return ddsA 

rdd = lines.map(vehA) 
rdd.collect() 

は出力:

1 
1 
1 
1 
1 
1 
1 
None 
None 
None 
None 
1 
1 
1 
1 
1 
1 
None 
None 
... 

私もこれを試してみましたが、私はまだ、同じ出力を得る:あなたがそうであるようにddsA1と等しくないときNoneを返しvehA

if ddsA is not None: 
     if ddsA == 1 and ddsA is not None: 
      return ddsA 

答えて

2

あなたの方法をelseの場合は何も返さず、暗黙的にNoneを返します。

ddsAだけをキャプチャするには、マップの代わりにフィルタを使用できます。

関連する問題