Hadoop 增加猪的mapper

Hadoop 增加猪的mapper,hadoop,cassandra,apache-pig,Hadoop,Cassandra,Apache Pig,我正在使用pig使用CqlStorage从Cassandra加载数据。我有4个数据节点,每个节点可以有7个映射器,Cassandra中有大约3000万个数据。当我像这样跑的时候 LOAD'cql://keyspace/columnfamily'使用CqlStorage需要27个映射程序才能运行 但是如果我在加载函数中给出where子句 LOAD'cql://keyspace/columnfamily?where_clause=id%3D100'使用CqlStorage始终需要一个映射器 有人能帮

我正在使用pig使用CqlStorage从Cassandra加载数据。我有4个数据节点,每个节点可以有7个映射器,Cassandra中有大约3000万个数据。当我像这样跑的时候

LOAD'cql://keyspace/columnfamily'使用CqlStorage
需要27个映射程序才能运行

但是如果我在加载函数中给出where子句

LOAD'cql://keyspace/columnfamily?where_clause=id%3D100'使用CqlStorage
始终需要一个映射器


有人能帮我增加映射器吗?

从WHERE子句看,映射输入只有一个键,这就是为什么只有一个映射器。Hadoop将根据输入键的数量分配映射器。如果只有一个输入键,其他映射器将不起任何作用

底线是,如果在where子句中指定分区键,您将得到一个映射器(因为它是以这种方式分发的)。根据这些评论,我认为您正在为不止一个学生进行分析,因此没有理由指定分区键。您似乎也没有任何列对二级索引有意义。所以我不知道你为什么有where子句


从您的数据模型来看,您必须映射所有数据才能获得学生和时间范围组合的聚合分数。您可以更改为时间序列数据模型并成功过滤where子句,但您当前的模型不支持此操作。

此操作的可能副本专门针对具有where子句的CqlStorage,尽管我已尝试更改拆分大小,但仍然只有一个映射器。注:仅在我包含where子句的情况下。可能是这种情况。你能建议我用哪种API来做这件事吗?我的意思是在某些条件下通过过滤从cassandra读取数据,这样我就不会给pig带来太多的负载。你能提供一些关于你尝试做什么的细节吗?谢谢你的回复。我想从cassandra加载数据,通过pig处理,并将其转储到HDFS。为此,我使用CqlStorage。但在这里,我不想加载来自Cassandra的所有数据,我的标准是加载一个月或两个月的数据,这样我就不会给pig带来沉重的处理负担,但CqlStorage中的filter(where子句)看起来不起作用。因此,我想征求关于任何其他替代解决方案的建议。如果您发布您的数据模型,这将非常有用。C*中的模式类似于
表student(fn,ln,date,time,m1,m2,m3 PK((fn,ln,date),time))
。我想在给定的日期/时间汇总/拉取给定学生的分数。将结果放入hdfs后,我可以使用
sqoop
将数据加载到
rdbms
。我的报告将指向rdbms以显示学生的报告。