给定a.b两个文件,各存放50亿个url,每个url各占用64字节,内存限制是4G,如何找出a.b文件共同的url? 可以估计每个文件的大小为5G*64=300G,远大于4G.所以不可能将其完全加载到内存中处理.考虑采取分而治之的方法. 遍历文件a,对每个url求取hash(url)%1000,然后根据所得值将url分别存储到1000个小文件(设为a0,a1,...a999)当中.这样每个小文件的大小约为300M.遍历文件b,采取和a相同的方法将url分别存储到1000个小文件(b0,b1...…
假如每个url大小为10bytes,那么可以估计每个文件的大小为50G×64=320G,远远大于内存限制的4G,所以不可能将其完全加载到内存中处理,可以采用分治的思想来解决. Step1:遍历文件a,对每个url求取hash(url)%1000,然后根据所取得的值将url分别存储到1000个小文件(记为a0,a1,...,a999,每个小文件约300M); Step2:遍历文件b,采取和a相同的方式将url分别存储到1000个小文件(记为b0,b1,...,b999); 巧妙之处:这样处理后,所…
package com.hadoop.hdfs; import org.apache.hadoop.yarn.webapp.hamlet.Hamlet; import org.junit.Test; import java.io.*; import java.util.HashMap; import java.util.HashSet; public class Suanfa1 { @Test public void a1() throws IOException { BufferedReade…
问题:给定a.b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a.b文件共同的url? 分析:50亿个url,每个url64字节,就是320G,显然是无法一次读入内存的.因此这里需要采用分治法. 方案:分治法,分支方法:哈希 步骤: 如图所示: 1 将AB两个文件,用相同的哈希函数,分解为1000个独立哈希值相同的小文件,这里哈希函数的设计是个重点. 2 哈希值不同的url必然不在序号对应的文件中,因此只要在序号对应的两个文件中进行互相匹配即可. 3 比较每对小…
在mysql数据库中,有时候并不是很容易找出mysql数据库文件data的存放位置吗,这时就可以使用mysql自带的命令行工具进行查询. 具体命令如下:show variables like '%datadir%';…
转自:https://blog.csdn.net/tiankong_/article/details/77234726#commentBox 1.题目 给定a.b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a.b文件共同的url? 2.思考过程 //我看见这个题就啥也没想到,想不到哈希啊... 可以使用哈希,对a文件中的所有进行遍历,再对b进行遍历,但是由于文件过大,并且还要给哈希表分配空间,所以一次性建立哈希表希望不大. 3.解决办法 50亿*64B=320…
使用命令comm可以找出2个文件之间的差异 现在有文件如下: Linux:/qinys # cat A.txt apple lemon onion orange pear Linux:/qinys # cat B.txt grape lemon olive pear tomato 找出两个文件之间的差异 命令解释 (1)sort [文件名1] –o [文件名2] :将文件名1中的内容排序后保存在文件名2的文件中 (2)输出的第一列包含只在A.txt,第二列包含只在B.txt中出现的行,第三列包含…
1. 使用 ls 命令,只列出你的 home 文件夹中今天的文件. ls -al --time-style=+%D | grep `date +%D` 其中: -a- 列出所有文件,包括隐藏文件 -l- 启用长列表格式 --time-style=FORMAT- 显示指定 FORMAT 的时间 +%D- 以%m/%d/%y(月/日/年)格式显示或使用日期 此外,你使用可以 -X标志来按字母顺序对结果排序[3]: ls -alX --time-style=+%D |grep `date +%D` 你…
/**  * 功能:给定一个排序后的数组.包括n个整数.但这个数组已被旋转过多次,次数不详.找出数组中的某个元素.  * 能够假定数组元素原先是按从小到大的顺序排列的.  */ /** * 思路:数组被旋转过了,则寻找拐点. * @param a * @param left * @param right * @param x:要搜索的元素 * @return */ public static int search(int[] a,int left,int right,int x){ int mi…
ORACLE中如何找出大表分布在哪些数据文件中?   在ORACLE数据中,我们能否找出一个大表的段对象分布在哪些数据文件中呢? 答案是可以,我们可以用下面脚本来找出对应表的区.段分别位于哪些数据文件中 SET PAGESIZE 60; COL SEGMENT_TYPE FOR A12; COL FILE_NAME FOR A64; COL SEGMENT_NAME FOR A24; COL TABLESPACE_NAME FOR A24; COL SEGMENT_OWNER FOR A12;…