【发布时间】:2015-08-28 21:02:06
【问题描述】:
我在调用 collect() 后尝试保存一个 RDD。我在 Host-1 上调用 spark-submit(我假设 Driver 是我调用 spark-submit 脚本的主机,所以在这种情况下 Host-1 是 Driver),从 HBase 获取一些数据,对其运行一些操作然后在 RDD 上调用 collect() 并遍历收集的列表并将其保存到本地文件系统文件。本质上:
if __name__ == "__main__":
sc = SparkContext(appName="HBaseInputFormat")
# read the data from hbase
# ...
# ...
output = new_rdd.collect()
with open("/var/tmp/tmpfile.csv", 'w') as tmpf:
for o in output:
print (o)
tmpf.write("%s\n"%str(o))
tmpf.close()
这实际上适用于保存在 /var/tmp/tmpfile.csv 中的数据,除了数据保存在与 Driver 不同的主机上,比如 Host-3。 我的印象是 collect 总是会收集驱动程序主机上的分布式数据集,因此文件也应该在驱动程序上创建。 我哪里错了?
【问题讨论】:
标签: python hadoop apache-spark hbase pyspark