(甚至比Pig和Hive之间的差异更基本?为什么两者都有?)
我有一个数据处理管道,通过Hadoop 编写了几个Java map-reduce任务(我自己的自定义代码,源自Hadoop的Mapper和Reducer).它是一系列基本操作,如join,inverse,sort和group by.我的代码涉及并且不是很通用.
继续这种公认的开发密集型方法与使用多个UDF将所有内容迁移到Pig/Hive有什么优缺点?哪些工作不能执行?我会遭受性能下降(使用100s TB)吗?在维护时,我是否会失去调整和调试代码的能力?我可以将部分作业作为Java map-reduce进行管道化,并将其输入输出与Pig/Hive作业一起使用吗?
在阅读http://gbif.blogspot.com/2011/01/setting-up-hadoop-cluster-part-1-manual.html后,我们得出结论,我们的6节点hadoop集群可以使用一些调整,并且io. sort.factor似乎是一个很好的候选者,因为它控制着一个重要的权衡.我们正计划进行调整和测试,但提前规划并了解预期和观察内容似乎是合理的.
它目前在10.我们怎么知道它导致我们太多的合并?当我们提出它时,我们怎么知道它导致太多文件被打开?
请注意,我们无法直接关注博客日志提取,因为它已更新为CDH3b2,我们正在处理CDH3u2,它们已经更改......
有没有办法在猪中创建一个小的常数关系(表)?我只需要创建一个包含常量值的1元组的关系。类似于以下内容:
A = LOAD using ConstantLoader('{(1,2,3)}');
Run Code Online (Sandbox Code Playgroud)
谢谢,伊藤
挣扎了一个小时...... java代码:
ULogger.info("throwing out 666!");
System.exit(666);
Run Code Online (Sandbox Code Playgroud)
bash包装:
eval ${COMMAND_TO_RUN}
ret_code=$?
printf "error code : [%d]" ${ret_code}
Run Code Online (Sandbox Code Playgroud)
输出:
[2012-11-30 15:20:12,971][INFO ] throwing out 666!
error code : [0]
Run Code Online (Sandbox Code Playgroud)
这是什么交易?谢谢...
[编辑]
该${COMMAND_TO_RUN}IS
((java -Xmx9000m -Dtoday_nix=20121128 -cp "/usr/lib/hadoop/conf" com.paypal.risk.ars.linking.task_fw.BaseRunnableProcess 3>&1 1>&2 2>&3) | tee /dev/tty) > batches_errors.log
Run Code Online (Sandbox Code Playgroud) 我们在一个小的(16M行)不同的表和一个大的(6B行)倾斜的表之间有一个猪连接.定期加入在2小时内完成(经过一些调整后).我们尝试using skewed并将性能提升到20分钟.
但是,当我们尝试更大的倾斜表(19B行)时,我们从SAMPLER作业中收到此消息:
Split metadata size exceeded 10000000. Aborting job job_201305151351_21573 [ScriptRunner]
at org.apache.hadoop.mapreduce.split.SplitMetaInfoReader.readSplitMetaInfo(SplitMetaInfoReader.java:48)
at org.apache.hadoop.mapred.JobInProgress.createSplits(JobInProgress.java:817) [ScriptRunner]
Run Code Online (Sandbox Code Playgroud)
这在我们每次尝试时都是可重现的using skewed,并且在我们使用常规连接时不会发生.
我们尝试过设置mapreduce.jobtracker.split.metainfo.maxsize=-1,我们可以在job.xml文件中看到它,但它不会改变任何东西!
这里发生了什么事?这是由分发样本创建的错误using skewed吗?为什么不帮助改变参数-1呢?
我正在使用该pandas groupby+agg功能生成不错的报告
aggs_dict = {'a':['mean', 'std'], 'b': 'size'}
df.groupby('year').agg(aggs_dict)
Run Code Online (Sandbox Code Playgroud)
我想aggs_dict在整个数据帧上将其作为一个组使用,不除以年,例如:
df.groupall().agg(aggs_dict)
Run Code Online (Sandbox Code Playgroud)
要么:
df.agg(aggs_dict)
Run Code Online (Sandbox Code Playgroud)
但是找不到任何优雅的方法。.请注意,在我的实际代码中,代码aggs_dict非常复杂,因此操作起来很麻烦:
df.a.mean()
df.a.std()
df.b.size()
....
Run Code Online (Sandbox Code Playgroud)
我错过了一些简单而美好的东西吗?
与如何通过pandas中的两列计算唯一记录相同?,仅限每组.我试过了:
df = pd.DataFrame({'a': [1,1,1,2,2], 'b':[10,10,20,30,30], 'c':[5,7,7,11,17]})
df.groupby('a').groupby(['b', 'c']).ngroups
Run Code Online (Sandbox Code Playgroud)
它抛出AttributeError.
似乎缺乏对执行2个基本约束(唯一和外键)的支持,是失去许多工时调试和解决难题的原因.什么开始是一个简单,易于修复的问题(重复行/不一致的主要细节表)在我们的应用程序中甚至在我们的硬件中都没有被注意到,增长并引发复杂的边缘场景(例如,自我加入与重复可能导致通货膨胀和储存耗尽).
任何人都可以推荐一种方法/工具来避免这些麻烦吗?
超级菜鸟.我有一台带有cdh3u1伪分发服务器的服务器机器,以及一台带有使用cdh3u1 API的java应用程序的客户端机器.
如何配置客户端与服务器通信?我一直在谷歌搜索几个小时,无法找到"客户端配置"文件的位置."hdfs-default","core-default"和"mapred-default"以及它们的"-site"对应物都看起来像server(namenode和datanode)配置给我.
它只是"多用途客户端服务器"配置,我应该挑选这些适合客户端的文件中的属性吗?他们是谁?可能在这里遗漏了一些大事
谢谢,Ido
我正在尝试在 OR-TOOLS RL VRPTW 问题中强制执行移位长度约束。班次长度是车辆从到达第一个位置到离开最后一个位置的服务(运输 + 等待 + 服务)的总时间。
看起来 aTime dimension是完美的选择,但是它累积了第一个位置的窗口开始,这并不好。
所以重新迭代 - 我想要一个累积运输时间、服务时间和等待时间的维度(对于每个位置的时间窗口),但我不希望它累积路线中第一个位置的窗口开始时间(因为这正是司机班次开始的地方。如果司机从节点 i 开始并在节点 j 结束,我希望约束为: time_dimension.CumulVar(j) - time_dimension.CumulVar(i) < shift_length
我缺少任何明显的建模技巧吗?
有人可以告诉我如何显示plot_acf和plot_pacf并排?我在show=False争论和 matplotlib 疯狂的对象模型中挣扎......
春季新手:我有一系列批次
重点是,我没有任何明显的"项目" - 我不想与我的数据中的特定文本行相关,我将它作为一个大块工作,并且不需要任何提交间隔和这样...
但是,我确实希望保持所有这些步骤松散耦合 - 例如,步骤a + b + c可能会成功几天并累积处理过的东西而步骤d一直失败,然后当它最终成功时它会读取并处理所有它的前面步骤的输出.
SO:我的"项目"是一个虚构的"工作项目",它将表示整个新数据?我自己维护一系列队列并在它们之间传递这些虚构的工作项目?
谢谢!
hadoop ×4
apache-pig ×3
group-by ×2
java ×2
or-tools ×2
pandas ×2
python ×2
bash ×1
database ×1
hdfs ×1
hive ×1
mapreduce ×1
matplotlib ×1
netezza ×1
optimization ×1
skew ×1
spring ×1
spring-batch ×1
statsmodels ×1