【发布时间】:2020-02-23 20:30:04
【问题描述】:
我正在使用 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如下:
class CompanyRecord(
Integer company_id;
String company_name;
//getter and setters
//default & parametarized constructors
)
下面的spark代码将数据保存到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:文件'generated.java',第562行,第35列:编译失败:org.codehaus.commons.compiler.CompileException:文件'generated.java',第 562 行,第 35 列:名为“toString”的方法未在任何封闭类或任何超类型中声明,也未通过静态导入声明 在 org.apache.spark.sql.catalyst.expressions.codegen.CodeGenerator$.org$apache$spark$sql$catalyst$expressions$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)
问题:
如何找出这里出了什么问题?以及如何解决这个问题?
【问题讨论】:
标签: java apache-spark cassandra datastax-java-driver spark-cassandra-connector