我一直在用pig和我的cassandra数据来做各种各样的惊人的分组,这几乎是不可能的。我使用的是datastax对hadoop和cassandra的集成,我不得不说它给人留下了深刻的印象。向那些家伙致敬!!
我有一个相当小的沙盒集群(2节点),我把这个系统通过一些测试。我有一个cql表,它有约53m行(每个行大约350字节),我注意到Map器稍后需要很长时间才能遍历这53m行。我开始在原木上翻来翻去,我可以看到Map在不断地溢出(我在Map绘制器上看到177处溢出),我认为这是问题的一部分。
cassandrainputformat和jobconfig的组合只创建一个Map器,因此这个Map器必须从表中读取100%的行。我称之为反平行:)
现在,在这张图片中有很多齿轮在工作,包括:
2个物理节点
hadoop节点位于“analytics”dc(默认配置)中,但物理上位于同一机架中。
我可以使用本地仲裁来查看作业
有人能告诉我如何让pig创建更多的输入拆分,这样我就可以运行更多的Map器吗?我有23个位置;一直只用一个似乎很遗憾。
或者,我完全疯了,不明白这个问题?我欢迎两种答案!
3条答案
按热度按时间wgxvkvu91#
你应该设置
pig.noSplitCombination = true
. 你可以在三个地方之一做这个。调用脚本时:
在pig脚本中:
或者永远在
/etc/dse/pig/pig.properties
. 取消注解:否则,pig可能会将您的总输入路径(组合)设置为process:1。
ar7v8xwq2#
您可以将cassandra.input.split.size设置为小于64k的值,这是默认的拆分大小,因此可以获得更多拆分。cql表的每个节点有多少行?你能发布你的表格模式吗?
将拆分大小添加到url参数
对于cassandrastorage,请使用以下参数cassandra://[username:password@]/[?slice\u start=&slice\u end=[&reversed=true][&limit=1][&allow\u deletes=true][&widerows=true][&use\u secondary=true][&comparator=][&split\u size=][&partitioner=][&init\u address=][&rpc\u port=]]
对于cql存储,使用以下参数cql://[username:password@]/[?[页面大小=][&columns=][&output\u查询=][&where\u子句=][&split\u大小=][&partitioner=][&use\u secondary=true | false][&init\u地址=][&rpc\u端口=]]
pn9klfpd3#
设置pig.nosplitcombination=true将我带到另一个极端——使用这个标志,我开始有769个Map任务