草庐IT

hadoop - 如何在 Hadoop 的 map-reduce 作业中通过自定义比较器对键进行排序?

考虑这个类:(来自Hadoop:权威指南第3版):importjava.io.*;importorg.apache.hadoop.io.*;publicclassTextPairimplementsWritableComparable{privateTextfirst;privateTextsecond;publicTextPair(){set(newText(),newText());}publicTextPair(Stringfirst,Stringsecond){set(newText(first),newText(second));}publicTextPair(Textfir

hadoop - 在 mapreduce 中,为什么映射器不通过网络将输出键值直接发送到缩减器?

我知道映射器在将数据洗牌到reducer之前将其输出写入节点本地磁盘。但是,为什么他们不能将数据直接发送到相应的reducer(即时洗牌)并让reducer进行排序和休息。我一直在思考本地商店的优点。第一个数据保存在磁盘上,但即使一个映射器失败,已经保存的中间键值将被清除,另一个映射器将从头开始。其次是带宽考虑,但数据最终还是会被发送到reducer。我们可以逐block发送以减少网络开销。也许关键原因在于归并排序过程。如果数据在发送到reducer之前没有排序,它们可能会成为瓶颈。 最佳答案 whycan'ttheysenddat

hadoop - 有人在 hadoop 流媒体作业中使用过 mapred.job.tracker=local 吗?

在过去的几周里,我们每天都使用hadoopstreaming来计算一些报告。最近我们对我们的程序进行了更改,如果输入大小小于10MB,我们将在JobConf中设置mapred.job.tracker=local,然后作业将在本地运行。但是昨晚,许多作业都失败了,runningJob.getJobState()返回了状态3。我不知道为什么,stderr里什么也没有。我无法用谷歌搜索与此问题相关的任何内容。所以我想知道我是否应该在生产模式下使用mapred.job.tracker=local?也许它只是hadoop提供的开发中的调试解决方案。有人知道吗?任何信息,任何信息,谢谢。

sql - 在 Hive 或 Impala 或 Pig 中通过字符串匹配连接表

我有两个表A和B,其中B很大(2000万乘以300)和A大小适中(300kx10)。A包含一列地址,B包含3列,它们可以放在一起形成正确的街道地址。例如,在A中,地址列可以是:id|Address-----------233|123MainSt在B中我们可以:Number|Street_name|Street_suffix|Tax------------------------------------------------123|Main|Street|320.2我想使用类似于LIKE的字符串匹配来加入它们,如下所示:selectA.id,B.TaxfromAleftjoinBonA

hadoop - 删除 hive 中超过 30 天的分区

我根据日期yyyy-mm-dd对Hive表进行了分区。我想每天运行一个脚本来删除所有超过30天的分区,但在这种情况下我不想传递日期。我希望它获取系统日期并删除超过30天的分区。 最佳答案 您需要使用Linux/Unix为DROPPARTITION日期设置变量并在ALTERTABLE语句中使用它。举个例子CREATETABLEramesh.test(col1STRING,col2STRING)PARTITIONEDBY(partition_datedate);INSERTINTOTABLEramesh.testPARTITION(pa

java - AmazonS3Client 在 hadoop(oozie) 中通过代理

我正在尝试通过oozie运行java代码。该代码是为非代理环境编写的,但我试图在需要代理服务器设置的环境中实现它。这是我在运行作业时遇到的错误。2015-05-1809:22:26,929WARNcom.amazonaws.http.AmazonHttpClient:UnabletoexecuteHTTPrequest:connecttimedoutjava.net.SocketTimeoutException:connecttimedout现在这是预期的行为,因为我需要通过代理传递那个,但问题是我没有看到这个连接到代理。所有人都试图直接连接到互联网,但被防火墙阻止了。我已经使用/et

hadoop - 如何删除HDFS中超过x天的数据

如何删除早于x天的数据。在linux它非常简单,但是在hdfs发现困难。此外甚至hdfsdfs-ls/正在提供未排序的有序数据。 最佳答案 这是执行此操作的代码片段:days_diff=10now=$(date+%s)hdfsdfs-ls/path/todir/|whilereadf;dodir_date=`echo$f|awk'{print$6}'`filename=`echo$f|awk'{print$8}'`difference=$((($now-$(date-d"$dir_date"+%s))/(24*60*60)))if[

软件测试面试题:你平常做接口测试的过程中发现过哪些bug?

你平常做接口测试的过程中发现过哪些bug?这个问题其实回到起来很简单,只要做过接口测试的,总能发现几个BUG吧,把你平常发现的bug说2-3个就可以了。面试官出这个题,主要是想知道你是不是真的做过接口测试,毕竟现在很多小伙伴简历都是写的假的(你要不写估计面试机会都没有,没办法,为了生存,能理解)比如上面说的,提现输入框,在页面上输入负数,肯定是无法提交过去(前端页面会判断金额),如果我不走前端,直接用接口工具发请求,输入一个负数过去。(假设服务端没做提现金额数据判断)余额=当前余额(100)-提现金额(-100),那么提现-100,余额就变成200了,也就是越提现,余额越大了可以用接口工具去直

hadoop - hadoop 中超过 120 个计数器

Hadoop计数器大小有限制。默认为120。我尝试使用配置“mapreduce.job.counters.limit”来更改它,但它不起作用。我看过源代码。这就像类“org.apache.hadoop.mapred.Counters”中的JobConf实例是私有(private)的。有人见过吗?你的解决方案是什么?谢谢:) 最佳答案 您可以在JT、TT、客户端节点上覆盖mapred-site.xml中的该属性,但请确保这将是系统范围的修改:...mapreduce.job.counters.limit500...然后在您的集群上重新

hadoop - 我可以通过在 Hive 中通过 "CREATE TABLE AS SELECT....."创建的表进行聚类/分桶吗?

我正在尝试在Hive中创建一个表CREATETABLEBUCKET_TABLEASSELECTa.*FROMTABLE1aLEFTJOINTABLE2bON(a.key=b.key)WHEREb.keyISNUllCLUSTEREDBY(key)INTO1000BUCKETS;此语法失败-但我不确定是否可以执行此组合语句。有任何想法吗? 最佳答案 遇到这个问题,发现没有提供答案。我进一步查看并在Hive文档中找到了答案。这永远行不通,因为CTAS有以下限制:目标表不能是分区表。目标表不能是外部表。目标表不能是列表分桶表。来源:htt