
思維導圖
Q1:什么是SQL?為什么要用到SQL?
1.SQL(Structured Query Language,結構化查詢語言)
-
SQL是一種數(shù)據(jù)庫查詢和程序設計語言,用于存取數(shù)據(jù),以及查詢、更新和管理關系數(shù)據(jù)庫系統(tǒng)
-
通俗地講,SQL就是用來提取數(shù)據(jù)的語言
-
由于數(shù)據(jù)庫類型以及數(shù)據(jù)存儲方式的不同,對應的SQL語法也會有所區(qū)別,但整體的SQL語法結構是統(tǒng)一的
-
目前,大多考查的是Hive SQL語句
2.SQL的用途
-
使用R/Python進行數(shù)據(jù)分析前,需要將數(shù)據(jù)從數(shù)據(jù)庫中提取出來,這時需要用到SQL語句
Q2:簡述Hive、Hadoop、HDFS、MapReduce。
1. Hive
-
Hive是基于Hadoop的一個數(shù)據(jù)倉庫工具,可以將結構化的數(shù)據(jù)文件映射為一個數(shù)據(jù)庫表,并提供類SQL查詢功能(Hive SQL)
2.Hadoop
-
Hadoop是現(xiàn)在各大公司用得非常多的一種數(shù)據(jù)存儲和計算架構系統(tǒng)
-
Hadoop可以使用戶在不了解分布式底層細節(jié)的情況下開發(fā)分布式程序,充分利用集群的威力進行高速計算和存儲
-
Hadoop解決了兩大問題:大數(shù)據(jù)存儲(HDFS)、大數(shù)據(jù)分析(MapReduce)
3.HDFS(Hadoop Distributed File System)
-
HDFS是可擴展的、容錯的、高性能的分布式文件系統(tǒng),異步復制,一次寫入、多次讀取
-
HDFS主要負責存儲
4.MapReduce
-
MapReduce是分布式計算框架,包含Map(映射)和Reduce(歸約)過程
-
MapReduce負責在HDFS上進行計算
Q3:簡述Hadoop和MySQL的區(qū)別以及適用情況。
1.Hive SQL
-
相當于將SQL語句轉換成對應的Java語句來實現(xiàn)Map和Reduce過程
2.Hadoop
-
Hadoop系統(tǒng)可以存儲并計算海量數(shù)據(jù),滿足互聯(lián)網(wǎng)公司上億數(shù)據(jù)量計算的需求
-
但處理“前端實時展示數(shù)據(jù)的變化情況”這類問題效率低,從HDFS中實時獲取數(shù)據(jù)后再展示在前端,會因為Hadoop系統(tǒng)本身啟動慢而無法保證實時性
3.MySQL
-
MySQL是將數(shù)據(jù)存儲在本地服務器上的關系數(shù)據(jù)庫
-
對于單次計算量不是很大的查詢能夠很快地進行響應,獲取相關結果,滿足數(shù)據(jù)看板等實時展示數(shù)據(jù)的需要
-
但是當數(shù)據(jù)量非常大時,MySQL的速度相比于Hadoop系統(tǒng)就會慢得多,并且可能會因為計算量過大使得任務被直接殺死
4.目前通用的方法
-
在Hadoop中通過Hive SQL對原始數(shù)據(jù)集進行處理,盡量在Hive中完成大數(shù)據(jù)量的計算,之后將處理好的數(shù)據(jù)通過出倉的方式導入MySQL中
-
MySQL中的數(shù)據(jù)就是在原始數(shù)據(jù)基礎上進行加工得到的數(shù)據(jù),前端進行調用時,可以直接獲取或者進行非常簡單的計算
參考文獻
1.《拿下Offer 數(shù)據(jù)分析師求職面試指南》徐麟 著