scala - Spark 在 hdfs 上写入 Parquet

标签 scala hadoop apache-spark hdfs parquet

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

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

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

这是预期的行为还是应该将所有 block 分布在整个集群中?

谢谢

最佳答案

由于您正在将数据写入 HDFS,因此这不依赖于 spark,而是依赖于 HDFS。来自 Hadoop : Definitive Guide

Hadoop’s default strategy is to place the first replica on the same node as the client (for clients running outside the cluster, a node is chosen at random, although the system tries not to pick nodes that are too full or too busy).

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

关于scala - Spark 在 hdfs 上写入 Parquet ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40417442/

相关文章:

hadoop - 如何在不使用 Hadoop 的情况下读取 HDFS 上的 Snappy 压缩文件?

hadoop - 哪个更适合做日志分析

scala - Spark提交期间如何解决DB2 java.io.CharConversionException

scala - Akka http 丢失发件人引用

java - 在 Appengine 上使用 mapreduce 对 200 万条记录进行重复数据删除时性能不佳

hadoop - 如何控制配置单元作业名称但保留阶段信息?

java - 使用第二个列表作为键过滤 Scala 元组列表(元组内)

Scala:使用迭代器的动态编程递归

json - Spark JSON 将 JSON 中完整的字段读取到案例类中

java - 如何使用 Java 中的结构化流从 Kafka 反序列化记录?