3

我一直在使用 Pig 和我的 Cassandra 数据来完成各种惊人的分组壮举,而这些壮举几乎不可能用命令式编写。我正在使用 DataStax 的 Hadoop 和 Cassandra 集成,我不得不说它非常令人印象深刻。向那些家伙致敬!!

我有一个非常小的沙盒集群(2 个节点),我正在对这个系统进行一些测试。我有一个 CQL 表,它有约 53M 行(大约 350 字节 ea。),我注意到 Mapper 稍后需要很长时间才能通过这 53M 行。我开始查看原木,我可以看到地图反复溢出(我从映射器中看到 177 次溢出),我认为这是问题的一部分。

CassandraInputFormat 和 JobConfig 的组合只创建了一个映射器,所以这个映射器必须从表中读取 100% 的行。我称之为反平行:)

现在,这张照片中有很多齿轮在起作用,包括:

  • 2个物理节点
  • hadoop 节点位于“分析”DC(默认配置)中,但物理上位于同一机架中。
  • 我可以使用 LOCAL_QUORUM 查看作业

任何人都可以指出如何让 Pig 创建更多输入拆分以便我可以运行更多映射器的方向吗?我有 23 个插槽;似乎很遗憾一直只使用一个。

或者,我完全疯了,不明白这个问题?我欢迎这两种答案!

4

3 回答 3

2

你应该设置pig.noSplitCombination = true. 您可以在三个地方之一执行此操作。

调用脚本时:

dse pig -Dpig.noSplitCombination=true /path/to/script.pig

在 Pig 脚本本身中:

SET pig.noSplitCombination true
table = LOAD 'cfs://ks/cf' USING CqlStorage();

或永久在/etc/dse/pig/pig.properties. 取消注释:

pig.noSplitCombination=true

否则,Pig 可能会将您的总输入路径(组合)设置为处理:1。

于 2014-04-14T19:18:59.180 回答
0

设置 pig.noSplitCombination = true 把我带到另一个极端——有了这个标志,我开始有 769 个地图任务

于 2015-02-18T23:10:11.177 回答
0

您可以将 cassandra.input.split.size 设置为小于 64k(默认拆分大小)的值,这样您可以获得更多拆分。Cql 表的每个节点有多少行?你能发布你的表模式吗?

将 split_size 添加到 url 参数

对于 CassandraStorage,使用以下参数 cassandra://[username:password@]/[?slice_start=&slice_end=[&reversed=true][&limit=1][&allow_deletes=true][&widerows=true][&use_secondary=true][&comparator =][&split_size=][&partitioner=][&init_address=][&rpc_port=]]

对于 CqlStorage,使用以下参数 cql://[username:password@]/[?[page_size=][&columns=][&output_query=][&where_clause=][&split_size=][&partitioner=][&use_secondary=true|false] [&init_address=][&rpc_port=]]

于 2013-10-28T17:54:24.470 回答