Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spark/Cassandra/Datastax连接器:如何调试JavaRDD内容?_Cassandra_Apache Spark_Rdd - Fatal编程技术网

Spark/Cassandra/Datastax连接器:如何调试JavaRDD内容?

Spark/Cassandra/Datastax连接器:如何调试JavaRDD内容?,cassandra,apache-spark,rdd,Cassandra,Apache Spark,Rdd,我已经在我的笔记本电脑上安装了一个带有DSE 4.6和ccm工具的小型3节点spark群集。我已经创建了一个基本键空间(ks)和一个存储字符串的表(chaine)。我已经编写了一个基本的java应用程序,它使用Datastax spark-cassandra-connector-java_2.10 当我尝试在JavaRDD中存储该表的内容和该段代码时: JavaRDD<String> cassandraRowsRDD = javaFunctions(sc).cassandraT

我已经在我的笔记本电脑上安装了一个带有DSE 4.6和ccm工具的小型3节点spark群集。我已经创建了一个基本键空间(ks)和一个存储字符串的表(chaine)。我已经编写了一个基本的java应用程序,它使用Datastax spark-cassandra-connector-java_2.10

当我尝试在JavaRDD中存储该表的内容和该段代码时:

   JavaRDD<String> cassandraRowsRDD = javaFunctions(sc).cassandraTable("ks", "chaine")
             .map(new Function<CassandraRow, String>() {
                 @Override
                 public String call(CassandraRow cassandraRow) throws Exception {
                     return cassandraRow.toString();
                 }
             });
    System.out.println("Data as CassandraRows: \n" + StringUtils.join(cassandraRowsRDD.collect().toArray(), "\n"));
JavaRDD cassandraRowsRDD=javaFunctions(sc).cassandraTable(“ks”,“chaine”)
.map(新函数(){
@凌驾
公共字符串调用(CassandraRow CassandraRow)引发异常{
返回cassandraRow.toString();
}
});
System.out.println(“数据格式为CassandraRows:\n”+StringUtils.join(cassandraRowsRDD.collect().toArray(),“\n”);
当我执行这个应用程序时,我在控制台上看不到任何关于我表格全部内容的输出。如果我在重写调用函数中添加println,我可以捕获位于主节点上的某些元素,但看不到集群其他节点上的数据

那么,我如何通过在控制台屏幕上打印字符串内容来调试cassandraRowsRDD的内容呢。谢谢你的帮助


Nicolas

我通过使用RDD的
toArray()
方法实现了这一点。在我的项目中,我使用了
javapairdd
,并使用
toArray()
生成了一个
Tuple2
对象(我可以迭代)

在您的例子中,使用
JavaRDD
toArray()
应该会生成一个
列表,您也应该能够迭代该列表

for (String row : cassandraRowsRDD.toArray()) {
    System.out.println(row);
}
JavaRDD.collect()在调试中很方便


提示:在intelliJ中,
alt+F8
打开一个“表达式求值”窗口,该窗口立即给出表达式的值。

collect
应该像您在这里做的那样。小心,
toArray()
不推荐使用,请按照@maasg的建议使用
collect()
。资料来源: