首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在cassandra上处理数据的批处理作业

在cassandra上处理数据的批处理作业
EN

Stack Overflow用户
提问于 2015-06-25 14:50:43
回答 1查看 575关注 0票数 0

我想将以下数据存储在NoSql中。原因是我将有很多写入,但读取较少(只有在批处理作业中,当我们需要拉出报告时),因此我选择了Cassandra。现在你可以看到我的数据格式了。我将得到多个逗号分隔的项目,由一个人在特定会话中查看。现在,我为每个相应的项目存储单行。正如您在存储在Cassandra中的数据部分中看到的那样。所以,现在我的问题是,假设我想要提取filter Category=10或filter city=200的所有记录的报告。那么,如果我选择了这个表模式,或者我需要以不同的形式存储它,或者我需要将此数据存储在可以轻松提取报告的其他NoSql数据库中,那么我将如何应用cassandra中的该列,或者如何拆分该列?

数据输入:

代码语言:javascript
运行
复制
   "Cookie":    "Ty44EnySoklz3456fdseses"
   "Session":   "vmt2Z2EpHQ"
   "ItemId":    "812781,681091,672396,632596,772796,704596"
   "Referer":   "RefererValue"
   "Filter":    "city=3001&filterbyadditional=2+4+3&ItemType=2&Category=10+1&color=12+7&owners=2+1&year=0-6&budget=2-4"
   "Impression": 1
   "DetailsView":1
   "PhotoView":  0
   "Response":   1
   "ShortListItems": "812781,681091,672396"

存储在Cassandra中的数据:

代码语言:javascript
运行
复制
    cookie               session   ItemID   Referer                                                                Filter       Impression  DetailsView  PhotoView   Response   ShortListItems  
Ty44EnySoklz3456fdseses vmt2Z2EpHQ 812781 RefererValue city=3001&filterbyadditional=2+4+3&ItemType=2&Category=10+1&color=12+7&owners=2+1&year=0-6&budget=2-4 1 1 0 1 812781,681091,672396
Ty44EnySoklz3456fdseses vmt2Z2EpHQ 681091 RefererValue city=3001&filterbyadditional=2+4+3&ItemType=2&Category=10+1&color=12+7&owners=2+1&year=0-6&budget=2-4 1 1 0 1 812781,681091,672396
Ty44EnySoklz3456fdseses vmt2Z2EpHQ 672396 RefererValue city=3001&filterbyadditional=2+4+3&ItemType=2&Category=10+1&color=12+7&owners=2+1&year=0-6&budget=2-4 1 1 0 1 812781,681091,672396
Ty44EnySoklz3456fdseses vmt2Z2EpHQ 632596 RefererValue city=3001&filterbyadditional=2+4+3&ItemType=2&Category=10+1&color=12+7&owners=2+1&year=0-6&budget=2-4 1 1 0 1 812781,681091,672396
Ty44EnySoklz3456fdseses vmt2Z2EpHQ 772796 RefererValue city=3001&filterbyadditional=2+4+3&ItemType=2&Category=10+1&color=12+7&owners=2+1&year=0-6&budget=2-4 1 1 0 1 812781,681091,672396
Ty44EnySoklz3456fdseses vmt2Z2EpHQ 704596 RefererValue city=3001&filterbyadditional=2+4+3&ItemType=2&Category=10+1&color=12+7&owners=2+1&year=0-6&budget=2-4 1 1 0 1 812781,681091,672396
EN

回答 1

Stack Overflow用户

发布于 2015-06-26 01:55:42

Basic Cassandra不支持like子句,也不太擅长执行即席查询。因此,如果您希望使用CQL访问此数据,则需要设计您的Cassandra模式来支持您计划进行的精确查询。例如,如果要对category值进行查询,可以将category作为聚类列,然后可以对category值执行范围查询。对于其他查询,您可能有使用不同字段的键的并行表。

但是,由于您提到了运行批处理作业来生成报告,因此您可能希望对原始表数据运行map reduce类型操作。为此,最流行的方法之一是将Apache Spark与Cassandra一起使用。使用Cassandra Spark连接器,您可以将Cassandra表数据读取到spark RDD中,然后对该数据运行转换(例如,根据类别或其他值过滤行)。

如果采用这种方法,您可能希望以某种合理方式对表数据进行分区,这样spark就不必执行全表扫描来生成报告,而是读取按日期分区的数据。

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

https://stackoverflow.com/questions/31043164

复制
相关文章

相似问题

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