1. 程式人生 > >大資料面試題-兩個大檔案中找出共同記錄

大資料面試題-兩個大檔案中找出共同記錄

1.題目描述

給定a、b兩個檔案,各存放50億個url,每個url各佔64位元組,記憶體限制是4G,讓你找出a、b檔案共同的url?

2.思考過程

(1)首先我們最常想到的方法是讀取檔案a,建立雜湊表(為什麼要建立hash表?因為方便後面的查詢),然後再讀取檔案b,遍歷檔案b中每個url,對於每個遍歷,我們都執行查詢hash表的操作,若hash表中搜索到了,則說明兩檔案共有,存入一個集合。

(2)但上述方法有一個明顯問題,載入一個檔案的資料需要50億*64bytes = 320G遠遠大於4G記憶體,何況我們還需要分配雜湊表資料結構所使用的空間,所以不可能一次性把檔案中所有資料構建一個整體的hash表。

(3)針對上述問題,我們分治演算法

的思想。

step1:遍歷檔案a,對每個url求取hash(url)%1000,然後根據所取得的值將url分別儲存到1000個小檔案(記為a0,a1,...,a999,每個小檔案約300M),為什麼是1000?主要根據記憶體大小和要分治的檔案大小來計算,我們就大致可以把320G大小分為1000份,每份大約300M(當然,到底能不能分佈儘量均勻,得看hash函式的設計)

step2:遍歷檔案b,採取和a相同的方式將url分別儲存到1000個小檔案(記為b0,b1,...,b999)(為什麼要這樣做? 檔案a的hash對映和檔案b的hash對映函式要保持一致,這樣的話相同的url就會儲存在對應的小檔案中,比如,如果a中有一個url記錄data1被hash到了a99檔案中,那麼如果b中也有相同url,則一定被hash到了b99中)

所以現在問題轉換成了:找出1000對小檔案中每一對相同的url(不對應的小檔案不可能有相同的url)

step3:因為每個hash大約300M,所以我們再可以採用(1)中的想法

最後對兩個新的url檔案做hadoop計數,reduce的結果中count為2的即是重複項。

也可用其他方法。

相關推薦

算法系列-資料試題-檔案共同記錄

1.題目描述給定a、b兩個檔案,各存放50億個url,每個url各佔64位元組,記憶體限制是4G,讓你找出a、b檔案共同的url?2.思考過程(1)首先我們最常想到的方法是讀取檔案a,建立雜湊表(為什麼要建立hash表?因為方便後面的查詢),然後再讀取檔案b,遍歷檔案b中每個

資料試題-檔案共同記錄

1.題目描述給定a、b兩個檔案,各存放50億個url,每個url各佔64位元組,記憶體限制是4G,讓你找出a、b檔案共同的url?2.思考過程(1)首先我們最常想到的方法是讀取檔案a,建立雜湊表(為什麼要建立hash表?因為方便後面的查詢),然後再讀取檔案b,遍歷檔案b中每個

資料學習——有海量日誌檔案儲存在hdfs

有兩個海量日誌檔案儲存在hdfs上, 其中登陸日誌格式:user,ip,time,oper(列舉值:1為上線,2為下線);訪問之日格式為:ip,time,url,假設登陸日誌中上下線資訊完整,切同一上下線時間段內是用的ip唯一,計算訪問日誌中獨立user數量最多的前10個url,用MapReduce實現。

30常見的資料試題 --讓你的薪資更上一層

30個常見的大資料面試題: 包含spark、scala、storm、hadoop等常見的大資料處理工具; 常用的分散式資料庫如hbase、MongoDB、Redis等; 其他常用的java基礎、linux相關技術等 1.scala 語言有什麼特點,什

[各種試題] 陣列和的第K

這是谷歌的一道面試題,有兩個陣列A和B,假設有一個數組C,C[i] = A[j] + B[ k ] , 即C中的元素是A和B中兩個元素的和。 讓你求C中第K大的數字。 之前有一篇轉載的用堆來求的方法,因為每出堆一次最多新增兩個元素進來,所以堆的最大容量是 2* k, 所以入

資料試題01

Spark Application 使用者自己寫的程式,批處理作業的集合,Application的main方法時程式的入口,定義了RDD以及對RDD的操作 SparkContext spark的重要api,使用者邏輯與spark的互動介面。會和Cluster manager

網際網路資料試題集錦

原文地址:http://hbase.group/article/89 以下面試題都是群裡小夥伴提供的,現場真題(包含校招題)1.網易大資料面試題 說說專案 Spark哪部分用得好,如何調優 Java哪部分了解比較好 聊聊併發,併發實現方法,volatile關鍵字說說

網易杭研資料試題

一面: hdfs讀寫過程 MR原理 講專案 balabala... 差不多40幾分鐘吧 二面: 講專案,專案一個點一個點的問。 主要講的是PV、UV的統計、其中設計到rowkey衝突怎麼處理。 接著講專案balabala 差不多40多分鐘吧 HR面(一個男

2019最新資料試題及答案整理

大資料面試題總結一波,助力準備在金三銀四尋找好工作的小夥伴們,只有度過筆試這一關才能在下面的關卡中大展巨集圖! 一、如何檢查namenode是否正常執行?重啟namenode的命令是什麼? 通過節點資訊和瀏覽器檢視,通過指令碼監控 hadoop-daemon.sh start namenod

網際網路公司資料試題參考指南

以下面試題都是群裡小夥伴提供的,現場真題(包含校招題) 1.網易大資料面試題 說說專案 Spark哪部分用得好,如何調優 Java哪部分了解比較好 聊聊併發,併發實現方法,volatile關鍵字說說 HashMap的底層原理 為什麼要重寫hashcode和equ

資料試題分享之spark試題

一  什麼是spark Spark是大資料的排程,監控和分配引擎。它是一個快速通用的叢集計算平臺.Spark擴充套件了流行的MapReduce模型.Spark提供的主要功能之一就是能夠在記憶體中執行計算 ,但對於在磁碟上執行的複雜應用程式,系統也比MapReduce更有效。

如何使用HBase?資料儲存的實戰場景

現如今各種資料儲存方案層出不窮,本文僅僅是結合兩個實戰場景就基於HBase的大資料儲存做了簡單的分析,並對HBase的原理做了簡單的闡述。如何使用好HBase,甚至於如何選擇一個最優的資料儲存方案,還需要我們根據場景需要具體分析和設計 HBase是一個高可靠性、高效能、面向

資料試題以及答案整理(一)

kafka的message包括哪些資訊 一個Kafka的Message由一個固定長度的header和一個變長的訊息體body組成 header部分由一個位元組的magic(檔案格式)和四個位元組的CRC32(用於判斷body訊息體是否正常)構成。當magic的值為

資料試題彙總版

作者 大資料面試題及答案 彙總版 當前版本: Ver 1.0 製作單位: 編寫人員: 審 核 人: 籤 收 人: 簽署日期:     201

2018年資料試題總結

目前面試了多家大資料開發工程師,成長了很多,也知道了很多知識,下面和大家分享一下我遇到的面試題和答案。 1.kafka叢集的規模,消費速度是多少。 答:一般中小型公司是10個節點,每秒20M左右。 2.hdfs上傳檔案的流程。 答:這裡描述的 是一個256M的檔

資料試題必會2018.01.07

資料分析師常見的10道面試題解答 1.海量日誌資料,提取出某日訪問百度次數最多的那個IP。 首先是這一天,並且是訪問百度的日誌中的IP取出來,逐個寫入到一個大檔案中,注意到IP是32位的,最多有個2*32個IP。同樣可以採用對映的方法,比如模1000,把整個大檔案對映為100

資料試題—7

9. 面試問題: 1.從前到後從你教育背景(學過哪些課)到各個專案你負責的模組,問的很細(本以為他是物理學博士,但是所有的技術都懂) 2.hadoop 的 namenode 宕機,怎麼解決 先分析宕機後的損失,宕機後直接導致client無法訪問,記憶體中的元資料丟失,但是硬碟中的元資料應該還存在

資料試題—6

3.14 1、一個Hadoop環境,整合了HBase和Hive,是否有必要給HDFS和Hbase都分別配置壓縮策略?請給出對壓縮策略的建議。 hdfs在儲存的時候不會將資料進行壓縮,如果想進行壓縮,我們可以在向hdfs上傳資料的時候進行壓縮。 1)、  採用壓縮流 2)、 &nb

2019最新資料試題 助力大家度過筆試關

  大資料面試題總結一波,助力準備在金三銀四尋找好工作的小夥伴們,只有度過筆試這一關才能在下面的關卡中大展巨集圖!     一、如何檢查namenode是否正常執行?重啟namenode的命令是什麼?   通過節點資訊和瀏覽器檢視,通過指令碼監控   hadoop-d

學習資料必經的階段,你做到了嗎?

大資料應該學什麼?如果是有基礎就根據個人情況來定,如果是零基礎想學習大資料,大資料要學的東西有很多,下面列舉了一些學習大資料就該學習的技術,許多想學習大資料不知道大資料應該學什麼的,可以參考一下。 首先學習大資料,先了解什麼是大資料,瞭解大資料大概的運用,自己是否對大資料感興趣,因為學門技術剛開