【问题标题】:saving dataset to cassandra using java spark使用java spark将数据集保存到cassandra
【发布时间】:2020-08-24 03:22:44
【问题描述】:

我正在尝试使用 java spark 将数据集保存到 cassandra db。 我可以使用下面的代码成功地将数据读入数据集

Dataset<Row> readdf = sparkSession.read().format("org.apache.spark.sql.cassandra")
.option("keyspace","dbname")
.option("table","tablename")
.load();

但是当我尝试编写数据集时,我得到 IOException: Could not load or find table, found similar tables in keyspace

Dataset<Row> dfwrite= readdf.write().format("org.apache.spark.sql.cassandra")
.option("keyspace","dbname")
.option("table","tablename")
.save();

我在 sparksession 中设置主机和端口 问题是我能够以覆盖和追加模式写入但无法创建表

我使用的版本如下: 火花Java 2.0 spark cassandra 连接器 2.3

尝试了不同的 jar 版本,但没有任何效果 我也经历过不同的堆栈溢出和github链接

非常感谢任何帮助。

【问题讨论】:

  • 确切的错误堆栈跟踪是什么
  • read.write()。错了是不是错字了
  • Ioexception: 无法加载或找到表 tablename
  • describe tables; 有表/键空间信息?`你检查了吗?我觉得你在做一些愚蠢的错误
  • 检查过,但没有创建表

标签: java apache-spark cassandra spark-cassandra-connector


【解决方案1】:

Spark 中的write 操作没有自动为您创建表的模式——原因有很多。其中之一是您需要为您的表定义一个主键,否则,如果您设置了错误的主键,您可能只会覆盖数据。因此,Spark Cassandra Connector provides a separate method to create a table based on your dataframe structure,但您需要提供分区和集群键列的列表。在 Java 中它将如下所示(完整代码为 here):

DataFrameFunctions dfFunctions = new DataFrameFunctions(dataset);
Option<Seq<String>> partitionSeqlist = new Some<>(JavaConversions.asScalaBuffer(
          Arrays.asList("part")).seq());
Option<Seq<String>> clusteringSeqlist = new Some<>(JavaConversions.asScalaBuffer(
          Arrays.asList("clust", "col2")).seq());
CassandraConnector connector = new CassandraConnector(
          CassandraConnectorConf.apply(spark.sparkContext().getConf()));
dfFunctions.createCassandraTable("test", "widerows6",
          partitionSeqlist, clusteringSeqlist, connector);

然后你就可以像往常一样写数据了:

dataset.write()
   .format("org.apache.spark.sql.cassandra")
   .options(ImmutableMap.of("table", "widerows6", "keyspace", "test"))
   .save();

【讨论】:

猜你喜欢
  • 2016-05-01
  • 2015-05-10
  • 2016-01-30
  • 1970-01-01
  • 2018-05-20
  • 1970-01-01
  • 2016-05-02
  • 1970-01-01
  • 2017-08-29
相关资源
最近更新 更多