Apache GraphX调用partitionBy时PartitionStrategy无法识别报错求助
Spark GraphX Java调用partitionBy报错解决方案
出现该报错的常见原因和对应解决方法如下:
- 缺少GraphX依赖
项目仅引入了Spark Core相关依赖,未引入GraphX组件依赖,导致PartitionStrategy类无法识别。
解决:在项目构建文件中加入和你使用的Spark版本完全匹配的GraphX依赖,以Maven为例:
<dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-graphx_2.12</artifactId> <version>你的Spark版本号</version> <scope>provided</scope> </dependency>
- 导入包错误
导入了其他包下同名的PartitionStrategy类,未导入GraphX官方类。
解决:确认导入语句为:
import org.apache.spark.graphx.PartitionStrategy;
- 调用方法参数不完整
GraphX的partitionBy是Scala实现的方法,第二个参数分区数带有Scala语法的默认值,Java调用时无法识别该默认参数,必须显式传入分区数;同时Graph是不可变对象,partitionBy会返回新的分区后图实例,原graph对象不会被修改,需要接收返回值使用。
解决:修改报错行代码为:
// 第二个参数为分区数,3台集群建议设置为3~12,可根据集群核心数调整 Graph<String, Double> partitionedGraph = graph.partitionBy(PartitionStrategy.RandomVertexCut$.MODULE$, 6);
- Spark版本不匹配
引入的GraphX依赖版本和Spark Core版本不一致,也会出现类找不到的报错,确保所有Spark相关依赖版本完全一致即可。
内容的提问来源于stack exchange,提问作者Aavash Bhandari
相关产品推荐
相关产品推荐

