Как сопоставить набор <text>поля Кассандры с использованием набора данных искры в POJO в Java - PullRequest
0 голосов
/ 28 мая 2019

У меня есть поле 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']

1 Ответ

0 голосов
/ 28 мая 2019

У вашего сотрудника должно быть что-то вроде этого;

@Column("test_ids")
private Set<String> testIds= new HashSet<String>();
...