spark写入hdfs上的Parquet地板

hwazgwia  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(437)

我安装了3个hadoop和spark节点。我想将rdbms中的数据放入Dataframe,并将这些数据写入hdfs上的parquet中。”“dfs.replication”值为1。
当我尝试使用以下命令时,我看到所有hdfs块都位于我执行sparkshell的节点上。

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

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

soat7uwm

soat7uwm1#

因为您正在将数据写入hdfs,所以这并不取决于spark,而是hdfs。来自hadoop:权威指南
hadoop的默认策略是将第一个副本放置在与客户机相同的节点上(对于在集群外运行的客户机,节点是随机选择的,尽管系统尝试不选择太满或太忙的节点)。
所以是的,这是我们的意图。

bgibtngc

bgibtngc2#

正如@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')

相关问题