java - 在类错误中找不到列

标签 java cassandra datastax-java-driver apache-spark-sql

我正在尝试从 cassandra 表中提取某些数据,然后将其写回 cassandra 中的另一个表。

这就是我所拥有的:

JavaRDD<MeasuredValue> mvRDD = javaFunctions(sc).cassandraTable("SB1000_47130646", "Measured_Value", mapRowTo(MeasuredValue.class))
  .where ("\"Time_Key\" IN (1601823,1601824)")
  .select("Time_Key","Start_Frequency","Bandwidth", "Power");  

然后我写回一个新表:

javaFunctions(mvRDD).writerBuilder("spark_reports","SB1000_47130646", mapToRow(MeasuredValue.class)).withColumnSelector(someColumns("Time_Key", "Start_Frequency", "Bandwidth", "Power")).saveToCassandra();

我的 MeasuredValue 类如下所示:

public static class MeasuredValue implements Serializable {


public MeasuredValue() { }

public MeasuredValue(Long Time_Key, Double Start_Frequency, Double Bandwidth, Float Power) {
    this.Time_Key = Time_Key;
    this.Start_Frequency = Start_Frequency;
    this.Bandwidth = Bandwidth;
    this.Power = Power;

}
private Long Time_Key;
public Long gettime_key() { return Time_Key; }
public void settime_key(Long Time_Key) { this.Time_Key = Time_Key; }

private Double Start_Frequency;
public Double getstart_frequency() { return Start_Frequency; }
public void setstart_frequency(Double Start_Frequency) { this.Start_Frequency = Start_Frequency; }

private Double Bandwidth;
public Double getbandwidth() { return Bandwidth; }
public void setbandwidth(Double Bandwidth) { this.Bandwidth = Bandwidth; }

private Float Power;    
public Float getpower() { return Power; }
public void setpower(Float Power) { this.Power = Power;
}

运行时出现的错误是:

Exception in thread "main" java.lang.IllegalArgumentException: requirement failed: Columns not found in class com.neutronis.spark_reports.Spark_Reports$MeasuredValue: [Time_Key, Start_Frequency, Bandwidth, Power]

最佳答案

我发现这是由于 getter/setter 遵循 JAVA 命名方案(就大写字母和变量而言)。由于表中的列是驼峰式大小写,因此我也必须将列名重新配置为正确的全小写命名约定,才能正常工作。

为了使用大写字母,我必须使用 HashMap:

 HashMap<String,String> colmap = new HashMap<String,String>();
    colmap.put( "start_frequency", "Start_Frequency" );
    colmap.put( "bandwith", "Bandwidth" );
    colmap.put( "power", "Power" );
    RowReaderFactory<MeasuredValue> mapRowTo = mapRowTo(MeasuredValue.class, colmap);

关于java - 在类错误中找不到列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35185890/

相关文章:

java - Mac OS X Activator New Play Framework 错误

java - 创建图形查询语言(节点/边缘/超边缘)

java - 如何先按字母顺序排序ArrayList,然后按数字排序

database - Cassandra适合需要频繁查询(读/写)的系统吗?

cassandra - 使用虚拟节点在种子节点(总共 2 个)死亡时重新平衡 Cassandra 1.2 集群

Cassandra : timeout during SIMPLE write query at consistency LOCAL_QUORUM

java - Java中 "Class<?"是什么意思?

php - CQLSH 客户端 - 模块'对象没有属性'parse_options

java - 如何使用带有 Datastax Java 驱动程序的 CQL 向 Cassandra 添加任意列?

cassandra - 无法从 cassandra 读取 map