[英]Error in using spark-cassandra-connector: java.lang.NoSuchMethodError
[英]spark-cassandra-connector - repartitionByCassandraReplica returns empty RDD - Java
因此,我有一个 16 节点集群,其中每个节点都安装了 Spark 和 Cassandra,同时我正在使用 Spark-Cassandra Connector 3.0.0。 我正在尝试使用分区键上的 cassandra 表加入数据集,同时还尝试使用.repartitionByCassandraReplica。
然而,我似乎只是得到一个带有 0 个分区的空 rdd(下面的第 5 行)? 任何想法为什么?
Encoder<ExperimentForm> ExpEncoder = Encoders.bean(ExperimentForm.class);
//FYI experimentlist is a List<String>
Dataset<ExperimentForm> dfexplistoriginal = sp.createDataset(experimentlist, Encoders.STRING()).toDF("experimentid").as(ExpEncoder);
JavaRDD<ExperimentForm> predf = CassandraJavaUtil.javaFunctions(dfexplistoriginal.toJavaRDD()).repartitionByCassandraReplica("mdb","experiment",experimentlist.size(),CassandraJavaUtil.someColumns("experimentid"),CassandraJavaUtil.mapToRow(ExperimentForm.class));
System.out.println(predf.collect()); //Here it gives an empty dataset with 0 partitions
Dataset<ExperimentForm> newdfexplist = sp.createDataset(predf.rdd(), ExpEncoder);
Dataset<Row> readydfexplist = newdfexplist.as(Encoders.STRING()).toDF("experimentid");
Dataset<Row> metlistinitial = sp.read().format("org.apache.spark.sql.cassandra")
.options(new HashMap<String, String>() {
{
put("keyspace", "mdb");
put("table", "experiment");
}
})
.load().select(col("experimentid"), col("description"), col("intensity")).join(readydfexplist, "experimentid");
如果需要,这是 Cassandra 中的实验表:
CREATE TABLE experiment(
experimentid varchar,
description text,
rt float,
intensity float,
mz float,
identifier text,
chemical_formula text,
filename text,
PRIMARY KEY ((experimentid),description, rt, intensity, mz, identifier, chemical_formula, filename));
这是 ExperimentForm class:
public class ExperimentForm {
private String experimentid;
public String getExperimentid() {
return experimentid;
}
public void setExperimentid(String experimentid) {
this.experimentid = experimentid;
}
}
如果您需要任何其他信息,请告诉我。
只需在 RDD 上执行 repartitionByCassandraReplica 和 JoinWithCassandraTable,然后转换回数据集。
我有同样的问题? 你设法解决了这个问题吗? 任何人?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.