繁体   English   中英

Spark在hdfs写入镶木地板

[英]Spark write to parquet on hdfs

我安装了3个节点hadoop和spark。 我想从rdbms中获取数据到数据框中,并将这些数据写入HDFS中的镶木地板。 “dfs.replication”值为1。

当我尝试使用以下命令时,我已经看到所有HDFS块都位于我执行spark-shell的节点上。

scala> xfact.write.parquet("hdfs://sparknode01.localdomain:9000/xfact")

这是预期的行为还是应该在群集中分布所有块?

谢谢

由于您将数据写入HDFS,因此不依赖于spark,而是依赖于HDFS。 来自Hadoop:权威指南

Hadoop的默认策略是将第一个副本放在与客户端相同的节点上(对于在群集外部运行的客户端,随机选择一个节点,尽管系统尝试不选择太满或太忙的节点)。

所以,是的,这是预期的行为。

就像@nik说的那样,我用多个客户做我的工作,它完成了我:

这是python片段:

columns = xfact.columns test = sqlContext.createDataFrame(xfact.rdd.map(lambda a: a),columns) test.write.mode('overwrite').parquet('hdfs://sparknode01.localdomain:9000/xfact')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM