Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.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
Java 为什么Apache Spark在客户端上执行过滤器_Java_Apache Spark_Out Of Memory_Cassandra 2.0_Spark Cassandra Connector - Fatal编程技术网

Java 为什么Apache Spark在客户端上执行过滤器

Java 为什么Apache Spark在客户端上执行过滤器,java,apache-spark,out-of-memory,cassandra-2.0,spark-cassandra-connector,Java,Apache Spark,Out Of Memory,Cassandra 2.0,Spark Cassandra Connector,作为apache spark的新手,在spark上获取Cassandra数据时面临一些问题 List<String> dates = Arrays.asList("2015-01-21","2015-01-22"); CassandraJavaRDD<A> aRDD = CassandraJavaUtil.javaFunctions(sc). cassandraTable("testing", "cf_text",Cassandra

作为apache spark的新手,在spark上获取Cassandra数据时面临一些问题

List<String> dates = Arrays.asList("2015-01-21","2015-01-22");
CassandraJavaRDD<A> aRDD = CassandraJavaUtil.javaFunctions(sc).
                    cassandraTable("testing", "cf_text",CassandraJavaUtil.mapRowTo(A.class, colMap)).
                    where("Id=? and date IN ?","Open",dates);
为什么在客户端应用过滤器,以及如何改进在服务器端应用过滤器


如何在windows平台上的cassandra群集上配置spark群集???

没有将cassandra与spark一起使用,通过阅读您提供的部分(谢谢),我看到:

注意:尽管ALLOW FILTERING子句隐式添加到 生成的CQL查询,当前不允许所有谓词 卡桑德拉发动机。这一限制将在下一节中讨论 未来的卡桑德拉版本。目前,ALLOW FILTERING与 由辅助索引或群集列索引的列

我非常确定(但尚未测试)不支持“IN”谓词:请参阅


因此,您可以尝试将where子句限制为Id(假设有二级索引),并对日期范围使用spark筛选。

没有将Cassandra与spark一起使用,通过阅读您提供的部分(谢谢),我看到:

注意:尽管ALLOW FILTERING子句隐式添加到 生成的CQL查询,当前不允许所有谓词 卡桑德拉发动机。这一限制将在下一节中讨论 未来的卡桑德拉版本。目前,ALLOW FILTERING与 由辅助索引或群集列索引的列

我非常确定(但尚未测试)不支持“IN”谓词:请参阅


因此,您可以尝试将where子句限制为Id(假设有一个二级索引),并对日期范围使用spark筛选。

我建议将中的表作为数据帧而不是RDD读取。Spark 1.3及更高版本中提供了这些选项。然后可以将CQL查询指定为如下字符串:

CassandraSQLContext sqlContext = new CassandraSQLContext(sc);

String query = "SELECT * FROM testing.cf_text where id='Open' and date IN ('2015-01-21','2015-01-22')";
DataFrame resultsFrame = sqlContext.sql(query);

System.out.println(resultsFrame.count());
所以试试看它是否对你更有效


一旦数据帧中有了数据,就可以对其运行Spark SQL操作。如果需要RDD中的数据,可以将数据帧转换为RDD。

我建议将表作为数据帧而不是RDD读取。Spark 1.3及更高版本中提供了这些选项。然后可以将CQL查询指定为如下字符串:

CassandraSQLContext sqlContext = new CassandraSQLContext(sc);

String query = "SELECT * FROM testing.cf_text where id='Open' and date IN ('2015-01-21','2015-01-22')";
DataFrame resultsFrame = sqlContext.sql(query);

System.out.println(resultsFrame.count());
所以试试看它是否对你更有效


一旦数据帧中有了数据,就可以对其运行Spark SQL操作。如果需要RDD中的数据,可以将数据帧转换为RDD。

在SparkConfig中设置spark.cassandra.input.split.size_in_mb解决了此问题

conf = new SparkConf();
        conf.setAppName("Test");
        conf.setMaster("local[4]");
        conf.set("spark.cassandra.connection.host", "192.168.1.15").
        set("spark.executor.memory", "2g").
        set("spark.cassandra.input.split.size_in_mb", "67108864");

Spark cassandra连接器读取的Spark.cassandra.input.split.size_的值(单位:mb)错误,因此在SparkConf中重写此值即可。现在IN子句也可以正常工作。

在SparkConfig中设置spark.cassandra.input.split.size_IN_mb解决了这个问题

conf = new SparkConf();
        conf.setAppName("Test");
        conf.setMaster("local[4]");
        conf.set("spark.cassandra.connection.host", "192.168.1.15").
        set("spark.executor.memory", "2g").
        set("spark.cassandra.input.split.size_in_mb", "67108864");

Spark cassandra连接器读取的Spark.cassandra.input.split.size_的值(单位:mb)错误,因此在SparkConf中重写此值即可。现在IN子句也可以正常工作。

我会试试DataFrame你知道如何在windows平台上的cassandra群集上配置spark群集吗?我会试试DataFrame你知道如何在windows平台上的cassandra群集上配置spark群集吗?谢谢你给我那个链接,帮我省了一天的时间。谢谢你帮我省了时间每天都给我那个链接。