我有一个CassandraRow对象,它包含一行的值。我从一张桌子上读到的。我想把同一个对象写入另一个表。但后来我得到了这个错误:
要求失败:在类com.datatax.park.connector.japi.CassandraRow:[my1,myColumns2,…]中找不到列
我试图通过创建Map并在函数中传递它来传递我自己的映射。这是我的代码:
CassandraRow row = fetch();
Map<String, String> mapping = Map.of("myColumn1", "myColumn1", "myColumns2", "myColumns2"....);
JavaSparkContext ctx = new JavaSparkContext(conf);
JavaRDD<CassandraRow> insightRDD = ctx.parallelize(List.of(row));
CassandraJavaUtil.javaFunctions(insightRDD).writerBuilder("mykeyspace", "mytable",
CassandraJavaUtil.mapToRow(CassandraRow.class, mapping)).saveToCassandra(); //I also tried without mapping
感谢您的帮助。我已经尝试过POJO方法,它正在发挥作用。但我不想被限制在创建POJO。我想要一种通用的方法,可以处理任何表和任何行。
我找不到使用Apache Spark概括我的解决方案的方法。因此,我使用ApacheCassandra的DatastaxJava驱动程序并编写SQL查询。这对我来说已经足够普通了。