2017-12-05 8 views
-2

Python(pyspark)でコーディングを開始するのが初めてです。 メッセージを}{に分割する必要があるtxtファイルがあります。メッセージは{...}{...}...で始まります。私はPyspark:ファイルテキストが分割された後に印刷できない

{...} 
{...} 
{...} 

数もあり、内部メッセージ

{... 
    {...} 
... 
} 

のようなコードにこれらを分割したい:私はコードの下にしようとしています
と私はというエラーを取得しています

Traceback (most recent call last): 
    File "PythonBLEDataParser_work2.py", line 49, in <module> 
    for line in words: 
TypeError: 'PipelinedRDD' object is not iterable 

(注 - 私はいくつかのコメント行を削除しているので、行番号49はを参照しています)

 from pyspark.sql import SparkSession 
     #importing re for removing space and others 
     import re 

     if __name__ == "__main__": 

     spark = SparkSession\ 
       .builder\ 
       .appName("PythonBLEDataParser")\ 
       .getOrCreate() 

     contentRDD = spark.sparkContext.textFile("BLE_data_Sample.txt")\ 

     #nonempty_lines = contentRDD.filter(lambda x: len(x) > 0) 
     #print (nonempty_lines.collect()) 
     words = contentRDD.map(lambda x: x.split('}{')) 
     for line in words: 
      print (line) 

     spark.stop 

私はpyspark: 'PipelinedRDD' object is not iterableで言及.map(lambda elem: list(elem))を試みたが、助けにはなりませんでした。

答えて

1

後:あなただけcontentRDDの変換ではない行動をした

words = contentRDD.map(lambda x: x.split('}{')) 

。これはまだPipelinedRDDオブジェクトです。

あなたはそう、あなたが「収集」などのアクションを必要とする運転手にそれを収集する場合:

words = contentRDD.map(lambda x: x.split('}{')).collect() 
for line in words: 
    print (line) 
関連する問題