Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.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

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
Apache spark 使用Spark流填充的Cassandra表上的Spark SQL_Apache Spark_Cassandra_Apache Spark Sql_Spark Streaming - Fatal编程技术网

Apache spark 使用Spark流填充的Cassandra表上的Spark SQL

Apache spark 使用Spark流填充的Cassandra表上的Spark SQL,apache-spark,cassandra,apache-spark-sql,spark-streaming,Apache Spark,Cassandra,Apache Spark Sql,Spark Streaming,我有一个火花流的过程,是在实时填写卡桑德拉表。我想对Cassandra表进行查询,以访问底层数据 CQL的语法非常有限(where条件有限,没有groupby),所以我考虑在其上使用SparkSQL 但一旦我加载数据帧,它将不会看到底层数据中的任何更改。如何不断刷新数据帧,使其始终看到数据更改 斯德詹我知道这是一篇老文章,但这里似乎有一个反复出现的主题。需要对已被摄取到NoSQL存储中的数据进行全功能查询,Spark SQL提供了这一功能。当走下路径时要考虑的一些事情< /P> 1> 如果直接使

我有一个火花流的过程,是在实时填写卡桑德拉表。我想对Cassandra表进行查询,以访问底层数据

CQL的语法非常有限(where条件有限,没有groupby),所以我考虑在其上使用SparkSQL

但一旦我加载数据帧,它将不会看到底层数据中的任何更改。如何不断刷新数据帧,使其始终看到数据更改


斯德詹

我知道这是一篇老文章,但这里似乎有一个反复出现的主题。需要对已被摄取到NoSQL存储中的数据进行全功能查询,Spark SQL提供了这一功能。当走下路径时要考虑的一些事情< /P> 1> 如果直接使用Spark连接器处理数据存储,即使使用谓词下推,也必须将相关列从Cassandra/其他NoSQL存储移到Spark中才能运行查询。缓存已移动到Spark中的数据没有什么意义,因为即席查询可确保下一次查询需要不同的数据集,这意味着再次重复该过程并在Spark过程中造成混乱,并抑制性能

2> 如果只是将数据存储中的所有数据加载到Spark中,那么就会出现上面提到的过时问题,因为Spark是一个不可变的缓存。一种解决方案是在Spark and drop中的数据上设置一个TTL(生存时间),并经常从头开始重新创建数据帧,这既浪费又低效,而且不清楚在执行此操作时查询会发生什么情况

一个同类最佳的解决方案(我所知道的)只是将数据帧转换为可变实体,这样NoSQL存储中的数据更改可以在Spark中进行CDC,并且您可以使用Spark SQL执行查询,而无需离开Spark集群或为每个查询将数据移动到Spark中。这具有显著的性能优势(数据可以以列格式存储,查询可以修剪,您可以避免不必要的序列化成本,利用Spark中的代码生成更快地运行查询),降低了总体系统复杂性,并允许您构建使用最新数据的连续应用程序