我在版本2.3.0中使用WSO2BAM,我在Cassandra数据源中定义了一个包含大量数据的流。目前,我的Hive脚本处理来自密钥空间的所有事件,其中99%的数据是不必要的。它也需要磁盘空间。
我的想法是在不必要之后清除这些数据。
流的格式是: {“streamId”:“kroki_i_kolejki_zlecen:1.0.0”,“name”:“kroki_i_kolejki_zlecen”,“version”:“1.0.0”,“nickName”:“Kroki i kolejki zlecen”,“description”:“Wyniki i daty zamkniecia zlecen“,”payloadData“:[{”name“:”casenum“,”type“:”STRING“},{”name“:”type_id“,”type“:”STRING“},{”name“: “id_zlecenie”, “类型”: “STRING”},{ “名称”: “SID”, “类型”: “STRING”},{ “名称”: “STEP_NAME”, “类型”: “STRING”},{ “名称”: “proc_name中”, “类型”: “STRING”},{ “名称”: “step_desc”, “类型”: “STRING”},{ “名称”: “audit_date”, “类型”:“STRING “},{” 名称 “:” audit_usecs”, “类型”: “STRING”},{ “名称”: “USER_NAME”, “类型”: “STRING”}]}
我的意图是在收到具有特定 payload_type_id 的事件后删除具有相同列 payload_id_zlecenie 的数据。 在关系数据库中,它将等于查询:
delete from kroki_i_kolejki_zlecen where payload_id_zlecenie = [argument];
有可能吗?
答案 0 :(得分:2)
在Hive中,您无法根据我的知识删除Cassandra数据。 Inosh给出的[1]链接描述了如何存档超过特定持续时间的Cassandra记录。 (例如,超过3个月的记录)所有存档数据将存储在具有后缀“_arch”的列族中。在该功能中,在生成的Hive脚本中使用自定义分析器来删除Cassandra行。另请注意,删除的记录大约需要10天才能使用行键完全删除整行。在此之前,您将看到一些与Cassandra行ID相关联的空字段。
Inosh的[2]是您问题的真正解决方案。启用增量处理后,配置单元脚本将仅处理上一个配置单元脚本执行中未处理的Cassandra行。这意味着,Hive将聚合每次执行中处理的值,并将其保留以供将来使用。下一次配置单元将使用该值,并且先前处理过上次时间戳并处理所有记录之后的时间戳。新的聚合值和较旧的聚合值将用于获得总体价值。
[1] - http://docs.wso2.org/display/BAM240/Archive+Cassandra+Data
[2] - http://docs.wso2.org/pages/viewpage.action?pageId=32345660
答案 1 :(得分:1)
您可以使用Cassandra数据存档功能[1]来存档cassandra数据。
另请参阅增量分析[2],这是BAM 2.4.0发布的新功能。使用该功能,可以逐步分析接收的数据,而无需处理CF中的所有事件。
[1] - http://docs.wso2.org/display/BAM240/Archive+Cassandra+Data
[2] - http://docs.wso2.org/pages/viewpage.action?pageId=32345660