首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在拼图中的map类型列上使用spark-sql过滤下推

在拼图中的map类型列上使用spark-sql过滤下推
EN

Stack Overflow用户
提问于 2016-06-21 16:16:34
回答 1查看 898关注 0票数 6

我正在尝试以嵌套的方式在拼图中存储我的数据,并使用映射类型列将复杂的对象存储为值。

如果有人能告诉我过滤器下推是否适用于列或not.For的映射类型,下面的示例是我的sql查询-

代码语言:javascript
复制
`select measureMap['CR01'].tenorMap['1M'] from RiskFactor where businessDate='2016-03-14' and bookId='FI-UK'`

measureMap是一个映射,关键字作为字符串,值作为自定义数据类型,包含2个属性-字符串和另一个字符串映射,双对。

我想知道下推是否会在map上起作用,例如,如果map有10个键值对,Spark会将整个map的数据存储在内存中并创建对象模型,或者它会在I/O读级别根据键过滤数据。

我还想知道有没有办法在where子句中指定关键字,比如- where measureMap.key = 'CR01‘?

EN

回答 1

Stack Overflow用户

发布于 2018-10-16 03:20:10

简短的回答是否定的。拼接谓词下推不适用于mapType列或嵌套拼接结构。

Spark catalyst优化器只理解拼图数据中的顶级列。它使用列类型、列数据范围、编码等最终生成查询的整个阶段代码。

当数据为MapType格式时,不可能从列中获取此信息。在一个map中可能有数百个键-值对,这在当前的spark基础设施中是不可能进行谓词下推的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37939029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档