DataFrameWriter不可调用

时间:2017-08-07 00:52:51

标签: apache-spark pyspark spark-dataframe

使用一种非常简单的方法来读取数据,选择它的一个子集,然后编写它,我得到了这个' DataFrameWriter'对象不可调用。

我肯定错过了一些基本的东西。

使用AWS EMR:

$ 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的值......例如到s3作为行分隔的文本文件。

最佳做法是什么?

尝试

我试过

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

但收到了

TypeError: 'DataFrameWriter' object is not callable

也试过

X = dc.collect()

但最终收到了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 个答案:

答案 0 :(得分: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"))