如何更改Apache Spark上的数据位置

时间:2015-06-01 07:41:16

标签: scala hadoop apache-spark

我在Spark中遇到数据位置问题。 我想知道我是否可以向Spark说出如何在节点上对数据进行分区。

例如,我在HDFS上有一个文件,我想获得一个RDD。我想根据此数据的特定属性对数据进行分区(例如,取决于此数据的最后一列的值)。

提前致谢

1 个答案:

答案 0 :(得分:2)

这种行为由您正在创建的RDD子类控制,在您的示例中是Haddoop或NewHadoopRDD,具体取决于您使用的Hadoop API。 在每个RDD子类中,您可以覆盖getPreferedLocations方法,该方法说明每个分区的计算位置。

由于@ user52045表示您可以实现自定义分区程序,但数据将发送到群集的每台计算机,因为您将首先拥有HadoopRDD,然后必须应用partitionBy(CustomPartitioner)方法才能获得数据你在分区中设计的地方。

我希望这会有用