Как сопоставить JavaBean columsn с полями таблицы Casssandra? - PullRequest
1 голос
/ 28 октября 2019

Я использую spark-sql.2.4.1v, datastax-java-cassandra-connector_2.11-2.4.1.jar и java8.

У меня есть таблица cassandra, такая как

create company(company_id int PRIMARY_KEY, company_name text);

JavaBean, как показано ниже

@Table(name = "company")
class CompanyRecord(
 @PartitionKey(0)
 @Column(name="company_id")
 Integer companyId;
@Column(name="company_name")
 String companyName;
//getter and setters
//default & parametarized constructors
)

У меня есть искровой код ниже, чтобы сохранить данные в таблице кассандры.

Dataset<Row> latestUpdatedDs = joinUpdatedRecordsDs.select("company_id", "company_name"); /// select from other source like xls sheet

Encoder<CompanyRecord> comanyEncoder =  Encoders.bean(CompanyRecord.class);         
Dataset<CompanyRecord> inputDs = latestUpdatedDs.as(comanyEncoder );


 inputDs 
        .write()
        .format("org.apache.spark.sql.cassandra")
        .option("table","company")
        .option("keyspace",  "ks_one")
        .mode(SaveMode.Append)
        .save();

Ошибка выдачи, как показано ниже

ERROR org.apache.spark.sql.catalyst.expressions.codegen.CodeGenerator - failed to compile: org.codehaus.commons.compiler.CompileException: File 'generated.java', Line 176, Column 75: A method named "toString" is not declared in any enclosing class nor any supertype, nor through a static import
org.codehaus.commons.compiler.CompileException: File 'generated.java', Line 176, Column 75: A method named "toString" is not declared in any enclosing class nor any supertype, nor through a static import
    at org.codehaus.janino.UnitCompiler.compileError(UnitCompiler.java:12124)

 Exception in thread "main" java.util.NoSuchElementException: Columns not found in table ks_one.company: 
 companyId, companyName
    at com.datastax.spark.connector.SomeColumns.selectFrom(ColumnSelector.scala:44)
    at com.datastax.spark.connector.writer.TableWriter$.apply(TableWriter.scala:385)

> Вопрос:

Несмотря на то, что я использую аннотацию для отображения, почему я получаюошибка ? Как это исправить, не меняя имена полей Java Bean (т.е. с companyId на company_id)?

...