У меня есть поле set в моей таблице cassandra, и я создаю набор данных Apache sparks для той же таблицы, имеющий также некоторые другие поля. Когда я печатаю значение набора данных, значения печатаются, но когда я сопоставляю набор данных с POJO, тогда поле с установленным типом дает значение null, а остальные поля дают соответствующие значения.
Поле test_ids в cassandra имеет тип set , а в java я использую HashSet для его представления. Если кто-то может помочь, пожалуйста, ответьте.
Dataset<Row> dsQ = spark1.read().format("org.apache.spark.sql.cassandra").options(props1).load();
dsQ.show();
Dataset<Employee> res = dsQ.as(Encoders.bean(Employee.class));
res.collectAsList().forEach(employee -> {
System.out.println("POJO: " + employee);
});
//POJO Class
@Column("emp_branch")
private String empBranch;
@Column("epoch_hour")
private int epochHour;
@Column("test_ids")
private Set<String> testIds = new HashSet<String>();
public String getEmpBranch() {
return empBranch;
}
public void setEmpBranch(String empBranch) {
this.empBranch = empBranch;
}
public int getEpochHour() {
return epochHour;
}
public void setEpochHour(int epochHour) {
this.epochHour = epochHour;
}
public Set<String> getTestIds() {
return testIds;
}
public void setTestIds(Set<String> testIds) {
this.testIds = testIds;
}
@Override
public String toString() {
return "StackOverflow [empBranch=" + empBranch + ", epochHour=" + epochHour + ", testIds=" + testIds + "]";
}
[Фактический результат]
emp_branch = cs, epoch_hour = 433064, test_ids = []
[Ожидаемый результат]
emp_branch = cs, epoch_hour = 433064, test_ids = ['1234']