Я использую spark-sql.2.4.1v, datastax-java-cassandra-connector_2.11-2.4.1.jar и java8.
Я создаю таблицу cassandra какthis:
create company(company_id int PRIMARY_KEY, company_name text);
JavaBean как показано ниже:
class CompanyRecord(
Integer company_id;
String company_name;
//getter and setters
//default & parametarized constructors
)
Искровой код ниже сохраняет данные в таблицу cassandra:
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();
Предоставление Ошибка как показано ниже:
Вызывается: org.codehaus.commons.compiler.CompileException: файл «Генерировано.java», строка 562, столбец35: не удалось скомпилировать: org.codehaus.commons.compiler.CompileException: файл «generate.java», строка 562, столбец 35: метод с именем «toString» не объявлен ни в каком классе, ни в каком-либо включающем классе, ни через статический типимпорт в org.apache.spark.sql.catalyst.expressions.codegen.CodeGenerator $ .org $ apache $ spark $ sql $ катализатор $ выражения $ codegen $ CodeGenerator $$ doCompile (CodeGenerator.scala: 1304) в org.apache.spark.sql.catalyst.expressions.codegen.CodeGenerator $$ anon $ 1.load (CodeGenerator.scala: 1376) в org.apache.spark.sql.catalyst.expressions.codegen.CodeGenerator $$ anon $ 1.load (CodeGenerator.scala: 1373) в org.spark_project.guava.cache.LocalCache $ LoadingValueReference.loadFuture (LocalCache.java:3599) в org.spark_project.guava.cache. LocalCache $ Segment.loadSync (LocalCache.java:2379)
Вопрос:
Как выяснить, что здесь не так? И как это исправить?