問題:上千萬or億資料(有重複),統計其中出現次數最多的前
n個資料
,分兩種情況:可一次讀入記憶體,不可一次讀入。
1.資料庫索引
a:為什麼要建索引?
答:索引可以提高資料的檢索效率,也可以降低資料庫的io成本,並且索引還可以降低資料庫的排序成本。排序分組操作主要消耗的就是cpu資源和記憶體,所以能夠在排序分組操作中好好的利用索引將會極大地降低cpu資源的消耗。
b:什麼情況下要建立索引?
b1:較頻繁地作為查詢條件的字段;
這個都知道。什麼是教頻繁呢?分析你執行的所有sql語句。最好將他們乙個個都列出來。然後分析,發現其中有些欄位在大部分的sql語句查詢時候都會用到,那麼就果斷為他建立索引。
b2:唯一性太差的字段不適合建立索引;
什麼是唯一性太差的字段。如狀態字段、型別字段。那些只儲存固定幾個值的字段,例如使用者登入狀態、訊息的status等。這個涉及到了索引掃瞄的特性。例如:通過索引查詢鍵值為a和b的某些資料,通過a找到某條相符合的資料,這條資料在x頁上面,然後繼續掃瞄,又發現符合a的資料出現在了y頁上面,那麼儲存引擎就會丟棄x頁面的資料,然後儲存y頁面上的資料,一直到查詢完所有對應a的資料,然後查詢b欄位,發現x頁面上面又有對應b欄位的資料,那麼他就會再次掃瞄x頁面,等於x頁面就會被掃瞄2次甚至多次。以此類推,所以同乙個資料頁可能會被多次重複的讀取,丟棄,在讀取,這無疑給儲存引擎極大地增加了io的負擔。
b3:更新太頻繁地字段不適合建立索引;
當你為這個字段建立索引時候,當你再次更新這個字段資料時,資料庫會自動更新他的索引,所以當這個字段更新太頻繁地時候那麼就是不斷的更新索引,效能的影響可想而知。大概被檢索幾十次會更新一次的字段才比較符合建立索引的規範。而如果乙個字段同乙個時間段內被更新多次,那麼果斷不能為他建立索引。
b4:不會出現在where條件中的字段不該建立索引;為常作為查詢條件的字段建立索引
如果某個字段經常用來做查詢條件,那麼該字段的查詢速度會影響整個表的查詢速度。因此,為這樣的字段建立索引,可以提高整個表的查詢速度。
2.trie樹+堆
3.//可用思路:trie樹+堆,資料庫索引,劃分子集分別統計,hash,分布式計算,近似統計,外排序
大資料時代 大資料的應用
大資料應用的關鍵,也是其必要條件,就在於 it 與 經營 的融合,當然,這裡的經營的內涵可以非常廣泛,小至乙個零售門店的經營,大至乙個城市的經營。以下是我整理的關於各行各業,不同的組織機構在大資料方面的應用的案例,在此申明,以下案例均 於網路,本文僅作引用,並在此基礎上作簡單的梳理和分類。通訊行業 ...
大資料應用開發 大資料的概念
維基百科定義 大資料是指利用常用軟體工具捕獲,管理和處理資料所耗時間超過可容忍時間的資料集。flume可以進行流式日誌資料的收集 sqoop可以互動關係型資料庫,進行匯入匯出資料 使用爬蟲技術,可以在網上爬取海量網頁資料 1.1 概念 離線批處理,是指對海量歷史資料進處理和分析,生成結果資料,供下一...
大資料應用領域
聚類模型屬於飛濺讀式挖掘模型,以使用者屬性 行為 消費等特徵資料為輸入,將使用者自動聚類為若干類,通常用來挖掘潛在目標客戶群體,也可以用在大資料營銷工具 crm工具和防欺詐解決方案上。分類 模型分析學習歷史資料經驗,分析未來資料發展方向。模型輸出是離散資料或類別的稱為分類模型,模型輸出是數值型別資料...