2017-08-07 7 views
0

非常に単純な方法でデータを読み込み、そのサブセットを選択して書き込むと、 'DataFrameWriter'オブジェクトが呼び出し可能になっています。DataFrameWriterが呼び出し可能でない

私は確かに何か基本的なものを欠いています。

$ pyspark 
> dx = spark.read.parquet("s3://my_folder/my_date*/*.gz.parquet")  
> dx_sold = dx.filter("keywords like '%sold%'")  
# select customer ids 
> dc = dx_sold.select("agent_id") 

質問 目標は今、DCの値を保存することです...例えば:AWS EMRを使用して

〜s3を行区切りのテキストファイルとして出力します。

どうすればよいですか?私は

dc.write("s3://my_folder/results/") 

を試みたが

TypeError: 'DataFrameWriter' object is not callable 

はまた

X = dc.collect() 

しかしeventuaを試み受信

試み

llyはTimeOutエラーメッセージを受け取りました。

はまた

dc.write.format("csv").options(delimiter=",").save("s3://my_folder/results/") 

を試みたが、最終的にフォーム

TaskSetManager: Lost task 4323.0 in stage 9.0 (TID 88327, ip-<hidden>.internal, executor 96): TaskKilled (killed intentionally) 
+1

DataFrameWriterは実際には呼び出し可能ではなく、 'df.write.save'でなければなりませんが、SparkではなくFSに問題があるように見えます。 – philantrovert

答えて

0

のメッセージを受け取った最初のコメントは正しいです:それはFSの問題でした。 アドホックな解決策は、望ましい結果をリストに変換してリストをシリアライズすることでした。例えば。

dc = dx_sold.select("agent_id").distinct() 
result_list = [str(c) for c in dc.collect()] 
pickle.dump(result_list, open(result_path, "wb")) 
関連する問題