当前位置: 首页 > 知识库问答 >
问题:

SparkSQL下推筛选在Spark Cassandra连接器中不起作用

楚昊明
2023-03-14
appname text,
randomnum int,
addedtime timestamp,
shortuuid text,
assetname text,
brandname text,

PRIMARY KEY ((appname, randomnum), addedtime, shortuuid)
val rdd = tabledf.filter("addedtime > '" + _to + "'").explain
== Physical Plan ==
Filter (cast(addedtime#2 as string) > 2016-12-20 11:00:00)

此外,它在spark cassandra Connector1.4中工作,但不是与最新的cassandra Connector1.6.0-M1一起工作。请让我知道这个问题

共有1个答案

况浩邈
2023-03-14

问题似乎是催化剂处理比较的方式。

做的时候

val rdd = tabledf.filter("addedtime > '" + _to + "'").explain

它将addedTime列强制转换为字符串,然后进行比较。Catalyst没有将这个谓词呈现给Spark Cassandra连接器,所以没有办法推动它。

INFO  2016-03-08 17:10:49,011 org.apache.spark.sql.cassandra.CassandraSourceRelation: Input Predicates: []
Filter (cast(addedtime#2 as string) > 2015-08-03)
df.filter("addedtime > cast('2015-08-03' as timestamp)").explain
DEBUG 2016-03-08 17:11:09,792 org.apache.spark.sql.cassandra.CassandraSourceRelation: Basic Rules Applied:
C* Filters: [GreaterThan(addedtime,2015-08-03 00:00:00.0)]
Spark Filters []

== Physical Plan ==
Scan org.apache.spark.sql.cassandra.CassandraSourceRelation@332464fe[appname#0,randomnum#1,addedtime#2,shortuuid#3] PushedFilters: [GreaterThan(addedtime,2015-08-03 00:00:00.0)]
 类似资料:
  • 我试图查询存在特定字段的日期范围。这似乎很容易,但我感觉到关键字“exists”在文档中发生了变化。我在5.4。https://www.elastic.co/guide/en/elasticsearch/reference/5.4/query-dsl-exists-filter.html 我使用@timestamp表示日期,并且字段“error_data”在映射中,只有在发现错误条件时才出现。 以

  • 介绍 我注意到我们项目中的推送过滤器都不起作用。它解释了为什么执行时间受到影响,因为它读取了数百万次,而它应该将它减少到几千次。为了调试这个问题,我编写了一个小测试,读取CSV文件,过滤内容(下推过滤器)并返回结果。 它不能与CSV一起工作,所以我尝试读取一个拼花文件。没有一个能用的。 数据 文件具有以下结构: 名词(noun的缩写)镶木地板文件有相同的结构 读取CSV文件 为了重现这个问题,我编

  • 我正在使用LocalHost运行Glassfish服务器4.1版和Netbeans。我在2台装有Windows10的计算机上这样做。我在一台电脑上安装了一个全新的、干净的Windows10版本。该计算机上的connectionpool无法工作。在另一台计算机上,它的工作状态和Linux(以前的操作系统)一样好。 在Netbeans中,我使用glassfis-fesources.xml文件开发了一个

  • 我试图在 /users查询中使用包含过滤器,例如:https://graph.microsoft.com/v1.0/users?$filter=包含(displayName,'Garth') 然而,这会导致一个BadRequest响应,称“发现了一个名称为‘包含’的未知函数”。这也可能是导航属性上的键查找,这是不允许的。" 根据OData 4.0规范,包含过滤器应该是可用的。有没有办法在用户列表中

  • 我在spark 1.2.1上使用datastax/spark-cassandra-connector和充满1B+行的C*表(datastax-enterprise dse 4.7.0)。我需要对时间戳参数执行范围筛选/Where查询。 使用rdd和JoinWithCassandraTable还是使用数据帧和PushDown?还有别的事吗?

  • 在我的文件中,我有... 我知道文件正在正确加载,因为服务器在端口8086上运行。 在应用程序中,我有一个 当我调用endpoint时,请求永远不会超时,它只是无限期地挂起。 我错过了什么吗? 注意:我还被告知,Tomcat使用这个字段是以分钟为单位,而不是以毫秒为单位(这在我看来是相当不寻常的选择)。我试着将它设置为< code > server . connection-time out =