我正在使用pig从CssSrarage加载来自Cassandra的数据。我有4个数据节点,每个节点可以有7个映射器,Cassandra有大约3000万个数据。我这样跑的时候
LOAD 'cql://keyspace/columnfamily' using CqlStorage
需要27个映射器才能运行。
但是如果我在加载函数中给出where子句,比如
LOAD 'cql://keyspace/columnfamily?where_clause=id%3D100' using CqlStorage
它总是需要一个映射器。
任何人都可以帮我增加映射器
答案 0 :(得分:0)
它从您的WHERE子句看起来就像您的地图输入只会是一个键,这就是为什么您只获得一个映射器的原因。 Hadoop将根据输入键的数量分配映射器。如果您只有一个输入键,则其他映射器将不执行任何操作。
最重要的是,如果您在where子句中指定分区键,您将获得一个映射器(因为它的分布方式)。基于这些评论我认为你不仅仅是对一个学生进行分析,所以你没有理由指定分区键。您似乎也没有任何对二级索引有意义的列。所以我不确定为什么你甚至有一个where子句。
从您的数据模型中可以看出,您必须映射所有数据,以获得学生和时间范围组合的汇总标记。您可以更改为时间序列数据模型并成功过滤where子句,但您当前的模型不支持此功能。