來(lái)源:秦路 時(shí)間:2017-02-09 11:03:11 作者:
在《 數(shù)據(jù)科學(xué)家成長(zhǎng)指南(上) 》中已經(jīng)介紹了基礎(chǔ)原理、統(tǒng)計(jì)學(xué)、編程能力和機(jī)器學(xué)習(xí)的要點(diǎn)大綱,本文更新后續(xù)的第五、六、七條線路:自然語(yǔ)言處理、數(shù)據(jù)可視化、大數(shù)據(jù)。
準(zhǔn)備好在新的一年,學(xué)習(xí)成為未來(lái)五年最性感的職位么。
——————
Text Mining / NLP
文本挖掘,自然語(yǔ)言處理。這是一個(gè)橫跨人類學(xué)、語(yǔ)言學(xué)的交叉領(lǐng)域。中文的自然語(yǔ)言處理更有難度,這是漢語(yǔ)語(yǔ)法特性決定的,英文是一詞單詞為最小元素,有空格區(qū)分,中文則是字,且是連續(xù)的。這就需要中文在分詞的基礎(chǔ)上再進(jìn)行自然語(yǔ)言處理。中文分詞質(zhì)量決定了后續(xù)好壞。
Corpus
語(yǔ)料庫(kù)
它指大規(guī)模的電子文本庫(kù),它是自然語(yǔ)言的基礎(chǔ)。語(yǔ)料庫(kù)沒有固定的類型,文獻(xiàn)、小說(shuō)、新聞都可以是語(yǔ)料,主要取決于目的。語(yǔ)料庫(kù)應(yīng)該考慮多個(gè)文體間的平衡,即新聞應(yīng)該包含各題材新聞。
語(yǔ)料庫(kù)是需要加工的,不是隨便網(wǎng)上下載個(gè)txt就是語(yǔ)料庫(kù),它必須處理,包含語(yǔ)言學(xué)標(biāo)注,詞性標(biāo)注、命名實(shí)體、句法結(jié)構(gòu)等。英文語(yǔ)料庫(kù)比較成熟,中文語(yǔ)料還在發(fā)展中。
NLTK-Data
自然語(yǔ)言工具包
NLTK創(chuàng)立于2001年,通過(guò)不斷發(fā)展,已經(jīng)成為最好的英語(yǔ)語(yǔ)言工具包之一。內(nèi)含多個(gè)重要模塊和豐富的語(yǔ)料庫(kù),比如nltk.corpus 和 nltk.utilities。Python的NLTK和R的TM是主流的英文工具包,它們也能用于中文,必須先分詞。中文也有不少處理包:TextRank、Jieba、HanLP、FudanNLP、NLPIR等。
Named Entity Recognition
命名實(shí)體識(shí)別
它是確切的名詞短語(yǔ),如組織、人、時(shí)間,地區(qū)等等。命名實(shí)體識(shí)別則是識(shí)別所有文字中的命名實(shí)體,是自然語(yǔ)言處理領(lǐng)域的重要基礎(chǔ)工具。
命名實(shí)體有兩個(gè)需要完成的步驟,一是確定命名實(shí)體的邊界,二是確定類型。漢字的實(shí)體識(shí)別比較困難,比如南京市長(zhǎng)江大橋,會(huì)產(chǎn)生南京 | 市長(zhǎng) | 江大橋 、南京市 | 長(zhǎng)江大橋兩種結(jié)果,這就是分詞的任務(wù)。確定類型則是明確這個(gè)實(shí)體是地區(qū)、時(shí)間、或者其他??梢岳斫獬晌淖职娴臄?shù)據(jù)類型。
命名實(shí)體主要有兩類方法,基于規(guī)則和詞典的方法,以及基于機(jī)器學(xué)習(xí)的方法。規(guī)則主要以詞典正確切分出實(shí)體,機(jī)器學(xué)習(xí)主要以隱馬爾可夫模型、最大熵模型和條件隨機(jī)域?yàn)橹鳌?/p>
Text Analysis
文本分析
這是一個(gè)比較大的交叉領(lǐng)域。以語(yǔ)言學(xué)研究的角度看,文本分析包括語(yǔ)法分析和語(yǔ)義分析,后者現(xiàn)階段進(jìn)展比較緩慢。語(yǔ)法分析以正確構(gòu)建出動(dòng)詞、名詞、介詞等組成的語(yǔ)法樹為主要目的。
如果不深入研究領(lǐng)域、則有文本相似度、預(yù)測(cè)單詞、困惑值等分析,這是比較成熟的應(yīng)用。
UIMA
UIMA 是一個(gè)用于分析非結(jié)構(gòu)化內(nèi)容(比如文本、視頻和音頻)的組件架構(gòu)和軟件框架實(shí)現(xiàn)。這個(gè)框架的目的是為非結(jié)構(gòu)化分析提供一個(gè)通用的平臺(tái),從而提供能夠減少重復(fù)開發(fā)的可重用分析組件。
Term Document Matrix
詞-文檔矩陣
它是一個(gè)二維矩陣,行是詞,列是文檔,它記錄的是所以單詞在所有文檔中出現(xiàn)頻率。所以它是一個(gè)高維且稀疏的矩陣。
這個(gè)矩陣是TF-IDF(term frequency–inverse document frequency)算法的基礎(chǔ)。TF指代的詞在文檔中出現(xiàn)的頻率,描述的是詞語(yǔ)在該文檔的重要數(shù),IDF是逆向文件頻率,描述的是單詞在所有文檔中的重要數(shù)。我們認(rèn)為,在所有文檔中都出現(xiàn)的詞肯定是的、你好、是不是這類常用詞,重要性不高,而越稀少的詞越重要。故由總文檔數(shù)除以包含該詞的文檔數(shù),然后取對(duì)數(shù)獲得。
詞-文檔矩陣可以用矩陣的方法快速計(jì)算TF-IDF。
它的變種形式是Document Term Matrix,行列顛倒。
Term Frequency &Weight
詞頻和權(quán)重
詞頻即詞語(yǔ)在文檔中出現(xiàn)的次數(shù),這里的文檔可以認(rèn)為是一篇新聞、一份文本,甚至是一段對(duì)話。詞頻表示了詞語(yǔ)的重要程度,一般這個(gè)詞出現(xiàn)的越多,我們可以認(rèn)為它越重要,但也有可能遇到很多無(wú)用詞,比如的、地、得等。這些是停用詞,應(yīng)該刪除。另外一部分是日常用語(yǔ),你好,謝謝,對(duì)文本分析沒有幫助,為了區(qū)分出它們,我們?cè)偌尤霗?quán)重。
權(quán)重代表了詞語(yǔ)的重要程度,像你好、謝謝這種,我們認(rèn)為它的權(quán)重是很低,幾乎沒有任何價(jià)值。權(quán)重既能人工打分,也能通過(guò)計(jì)算獲得。通常,專業(yè)類詞匯我們會(huì)給予更高的權(quán)重,常用詞則低權(quán)重。
通過(guò)詞頻和權(quán)重,我們能提取出代表這份文本的特征詞,經(jīng)典算法為TF-IDF。
Support Vector Machines
支持向量機(jī)
它是一種二類分類模型,有別于感知機(jī),它是求間隔最大的線性分類。當(dāng)使用核函數(shù)時(shí),它也可以作為非線性分類器。
它可以細(xì)分為線性可分支持向量機(jī)、線性支持向量機(jī),非線性支持向量機(jī)。
非線性問(wèn)題不太好求解,圖左就是將非線性的特征空間映射到新空間,將其轉(zhuǎn)換成線性分類。說(shuō)的通俗點(diǎn),就是利用核函數(shù)將左圖特征空間(歐式或離散集合)的超曲面轉(zhuǎn)換成右圖特征空間(希爾伯特空間)中的的超平面。
常用核函數(shù)有多項(xiàng)式核函數(shù),高斯核函數(shù),字符串核函數(shù)。
字符串核函數(shù)用于文本分類、信息檢索等,SVM在高維的文本分類中表現(xiàn)較好,這也是出現(xiàn)在自然語(yǔ)言處理路徑上的原因。
Association Rules
關(guān)聯(lián)規(guī)則
它用來(lái)挖掘數(shù)據(jù)背后存在的信息,最知名的例子就是啤酒與尿布了,雖然它是虛構(gòu)的。但我們可以理解它蘊(yùn)含的意思:買了尿布的人更有可能購(gòu)買啤酒。
它是形如X→Y的蘊(yùn)涵式,是一種單向的規(guī)則,即買了尿布的人更有可能購(gòu)買啤酒,但是買了啤酒的人未必會(huì)買尿布。我們?cè)谝?guī)則中引入了支持度和置信度來(lái)解釋這種單向。支持度表明這條規(guī)則的在整體中發(fā)生的可能性大小,如果買尿布啤酒的人少,那么支持度就小。置信度表示從X推導(dǎo)Y的可信度大小,即是否真的買了尿布的人會(huì)買啤酒。
關(guān)聯(lián)規(guī)則的核心就是找出頻繁項(xiàng)目集,Apriori算法就是其中的典型。頻繁項(xiàng)目集是通過(guò)遍歷迭代求解的,時(shí)間復(fù)雜度很高,大型數(shù)據(jù)集的表現(xiàn)不好。
關(guān)聯(lián)規(guī)則和協(xié)同過(guò)濾一樣,都是相似性的求解,區(qū)分是協(xié)同過(guò)濾找的是相似的人,將人劃分群體做個(gè)性化推薦,而關(guān)聯(lián)規(guī)則沒有過(guò)濾的概念,是針對(duì)整體的,與個(gè)人偏好無(wú)關(guān),計(jì)算出的結(jié)果是針對(duì)所有人。
Market Based Analysis
購(gòu)物籃分析,實(shí)際是Market Basket Analysis,作者筆誤。
傳統(tǒng)零售業(yè)中,購(gòu)物籃指的是消費(fèi)者一次性購(gòu)買的商品,收營(yíng)條上的單子數(shù)據(jù)都會(huì)被記錄下來(lái)以供分析。更優(yōu)秀的購(gòu)物籃分析,還會(huì)用紅外射頻記錄商品的擺放,顧客在超市的移動(dòng),人流量等數(shù)據(jù)。
關(guān)聯(lián)規(guī)則是購(gòu)物籃分析的主要應(yīng)用,但還包括促銷打折對(duì)銷售量的影響、會(huì)員制度積分制度的分析、回頭客和新客的分析。
Feature Extraction
特征提取
它是特征工程的重要概念。數(shù)據(jù)和特征決定了機(jī)器學(xué)習(xí)的上限,而模型和算法只是逼近這個(gè)上限而已。而很多模型都會(huì)遇到維數(shù)災(zāi)難,即維度太多,這對(duì)性能瓶頸造成了考驗(yàn)。常見文本、圖像、聲音這些領(lǐng)域。
為了解決這一問(wèn)題,我們需要進(jìn)行特征提取,將原始特征轉(zhuǎn)換成最有重要性的特征。像指紋識(shí)別、筆跡識(shí)別,這些都是有實(shí)體有跡可循的,而表情識(shí)別等則是比較抽象的概念。這也是特征提取的挑戰(zhàn)。
不同模式下的特征提取方法不一樣,文本的特征提取有TF-IDF、信息增益等,線性特征提取包括PCA、LDA,非線性特征提取包括核Kernel。
Using Mahout
使用Mahout
Mahout是Hadoop中的機(jī)器學(xué)習(xí)分布式框架,中文名驅(qū)象人。
Mahout包含了三個(gè)主題:推薦系統(tǒng)、聚類和分類。分別對(duì)應(yīng)不同的場(chǎng)景。
Mahout在Hadoop平臺(tái)上,借助MR計(jì)算框架,可以簡(jiǎn)便化的處理不少數(shù)據(jù)挖掘任務(wù)。實(shí)際Mahout已經(jīng)不再維護(hù)新的MR,還是投向了Spark,與Mlib互為補(bǔ)充。
Using Weka
Weka是一款免費(fèi)的,基于JAVA環(huán)境下開源的機(jī)器學(xué)習(xí)以及數(shù)據(jù)挖掘軟件。
Using NLTK
使用自然語(yǔ)言工具包
Classify Text
文本分類
將文本集進(jìn)行分類,與其他分類算法沒有本質(zhì)區(qū)別。假如現(xiàn)在要將商品的評(píng)論進(jìn)行正負(fù)情感分類,首先分詞后要將文本特征化,因?yàn)槲谋颈厝皇歉呔S,我們不可能選擇所有的詞語(yǔ)作為特征,而是應(yīng)該以最能代表該文本的詞作為特征,例如只在正情感中出現(xiàn)的詞:特別棒,很好,完美。計(jì)算出卡方檢驗(yàn)值或信息增益值,用排名靠前的單詞作為特征。
所以評(píng)論的文本特征就是[word11,word12,……],[word21,word22,……],轉(zhuǎn)換成高維的稀疏矩陣,之后則是選取最適合的算法了。
垃圾郵件、反黃鑒別、文章分類等都屬于這個(gè)應(yīng)用。
Vocabulary Mapping
詞匯映射
NLP有一個(gè)重要的概念,本體和實(shí)體,本體是一個(gè)類,實(shí)體是一個(gè)實(shí)例。比如手機(jī)就是本體、iPhone和小米是實(shí)體,它們共同構(gòu)成了知識(shí)庫(kù)。很多文字是一詞多意或者多詞一意,比如蘋果既可以是手機(jī)也可以是水果,iPhone則同時(shí)有水果機(jī)、蘋果機(jī)、iPhone34567的諸多叫法。計(jì)算機(jī)是無(wú)法理解這么復(fù)雜的含義。詞匯映射就是將幾個(gè)概念相近的詞匯統(tǒng)一成一個(gè),讓計(jì)算機(jī)和人的認(rèn)知沒有區(qū)別。
——————
Visualization數(shù)據(jù)可視化
這是難度較低的環(huán)節(jié),統(tǒng)計(jì)學(xué)或者大數(shù)據(jù),都是不斷發(fā)展演變,是屬于終身學(xué)習(xí)的知識(shí),而可視化只要了解掌握,可以受用很多年。這里并不包括可視化的編程環(huán)節(jié)。
Uni, Bi &Multivariate Viz
單/雙/多 變量
在數(shù)據(jù)可視化中,我們通過(guò)不同的變量/維度組合,可以作出不同的可視化成果。單變量、雙變量和多變量有不同作圖方式。
ggplot2
R語(yǔ)言的一個(gè)經(jīng)典可視化包
ggoplot2的核心邏輯是按圖層作圖,每一個(gè)語(yǔ)句都代表了一個(gè)圖層。以此將各繪圖元素分離。
ggplot(...) +
geom(...) +
stat(...) +
annotate(...) +
scale(...)
上圖就是典型的ggplot2函數(shù)風(fēng)格。plot是整體圖表,geom是繪圖函數(shù),stat是統(tǒng)計(jì)函數(shù),annotate是注釋函數(shù),scale是標(biāo)尺函數(shù)。ggplot的繪圖風(fēng)格是灰底白格。
ggplot2的缺點(diǎn)是繪圖比較緩慢,畢竟是以圖層的方式,但是瑕不掩瑜,它依舊是很多人使用R的理由。
Histogram &Pie(Uni)
直方圖和餅圖(單變量)
直方圖已經(jīng)介紹過(guò)了,這里就放張圖。
餅圖不是常用的圖形,若變量之間的差別不大,如35%和40%,在餅圖的面積比例靠肉眼是分辨不出來(lái)。
Tree &Tree Map
樹圖和矩形樹圖
樹圖代表的是一種結(jié)構(gòu)。層次聚類的實(shí)例圖就屬于樹圖。
當(dāng)維度的變量多大,又需要對(duì)比時(shí),可以使用矩形樹圖。通過(guò)面積表示變量的大小,顏色表示類目。
Scatter Plot (Bi)
散點(diǎn)圖(雙變量)
散點(diǎn)圖在數(shù)據(jù)探索中經(jīng)常用到,用以分析兩個(gè)變量之間的關(guān)系,也可以用于回歸、分類的探索。
利用散點(diǎn)圖矩陣,則能將雙變量拓展為多變量。
Line Charts (Bi)
折線圖(雙變量)
它常用于描繪趨勢(shì)和變化,和時(shí)間維度是好基友,如影隨形。
Spatial Charts
空間圖,應(yīng)該就是地圖的意思
一切涉及到空間屬性的數(shù)據(jù)都能使用地理圖。地理圖需要表示坐標(biāo)的數(shù)據(jù),可以是經(jīng)緯度、也可以是地理實(shí)體,比如上海市北京市。經(jīng)緯度的數(shù)據(jù),常常和POI掛鉤。
Survey Plot
不知道具體的含義,粗略翻譯圖形探索
plot是R中最常用的函數(shù),通過(guò)plot(x,y),我們可以設(shè)定不同的參數(shù),決定使用那種圖形。
Timeline
時(shí)間軸
當(dāng)數(shù)據(jù)涉及到時(shí)間,或者存在先后順序,我們可以使用時(shí)間軸。不少可視化框架,也支持以時(shí)間播放的形式描述數(shù)據(jù)的變化。
Decision Tree
決策樹
這里的決策樹不是算法,而是基于解釋性好的一個(gè)應(yīng)用。
當(dāng)數(shù)據(jù)遇到是否,或者選擇的邏輯判斷時(shí),決策樹不失為一種可視化思路。
D3.js
知名的數(shù)據(jù)可視化前端框架
d3可以制作復(fù)雜的圖形,像直方圖散點(diǎn)圖這類,用其他框架完成比較好,學(xué)習(xí)成本比前者低。
d3是基于svg的,當(dāng)數(shù)據(jù)量變大運(yùn)算復(fù)雜后,d3性能會(huì)變差。而canvas的性能會(huì)好不少,國(guó)內(nèi)的echarts基于后者。有中文文檔,屬于比較友好的框架。
R語(yǔ)言中有一個(gè)叫d3NetWork的包,Python則有d3py的包,當(dāng)然直接搭建環(huán)境也行。
IBM ManyEyes
Many Eyes是IBM公司的一款在線可視化處理工具。該工具可以對(duì)數(shù)字,文本等進(jìn)行可視化處理。應(yīng)該是免費(fèi)的。圖網(wǎng)上隨便找的。
Tableau
國(guó)外知名的商用BI,分為Desktop和Server,前者是數(shù)據(jù)分析單機(jī)版,后者支持私有化部署。加起來(lái)得幾千美金,挺貴的。圖網(wǎng)上隨便找的。
——————
Big Data 大數(shù)據(jù)
越來(lái)越火爆的技術(shù)概念,Hadoop還沒有興起幾年,第二代Spark已經(jīng)后來(lái)居上。因?yàn)樽髡邔懙谋容^早,現(xiàn)在的新技術(shù)沒有過(guò)多涉及。部分工具我不熟悉,就略過(guò)了。
Map Reduce Fundamentals
MapReduce框架
它是Hadoop核心概念。它通過(guò)將計(jì)算任務(wù)分割成多個(gè)處理單元分散到各個(gè)服務(wù)器進(jìn)行。
MapReduce有一個(gè)很棒的解釋,如果你要計(jì)算一副牌的數(shù)量,傳統(tǒng)的處理方法是找一個(gè)人數(shù)。而MapReduce則是找來(lái)一群人,每個(gè)人數(shù)其中的一部分,最終將結(jié)果匯總。分配給每個(gè)人數(shù)的過(guò)程是Map,處理匯總結(jié)果的過(guò)程是Reduce。
Hadoop Components
Hadoop組件
Hadoo號(hào)稱生態(tài),它就是由無(wú)數(shù)組建拼接起來(lái)的。
各類組件包括HDFS、MapReduce、Hive、HBase、Zookeeper、Sqoop、Pig、Mahout、Flume等。最核心的就是HDFS和MapReduce了。
HDFS
Hadoop的分布式文件系統(tǒng)
HDFS的設(shè)計(jì)思路是一次讀取,多次訪問(wèn),屬于流式數(shù)據(jù)訪問(wèn)。HDFS的數(shù)據(jù)塊默認(rèn)64MB(Hadoop 2.X 變成了128MB),并且以64MB為單位分割,塊的大小遵循摩爾定理。它和MR息息相關(guān),通常來(lái)說(shuō),Map Task的數(shù)量就是塊的數(shù)量。64MB的文件為1個(gè)Map,65MB(64MB+1MB)為2個(gè)Map。
Data Replication Principles
數(shù)據(jù)復(fù)制原理
數(shù)據(jù)復(fù)制屬于分布式計(jì)算的范疇,它并不僅僅局限于數(shù)據(jù)庫(kù)。
Hadoop和單個(gè)數(shù)據(jù)庫(kù)系統(tǒng)的差別在于原子性和一致性。在原子性方面,要求分布式系統(tǒng)的所有操作在所有相關(guān)副本上要么提交,要么回滾, 即除了保證原有的局部事務(wù)的原子性,還需要控制全局事務(wù)的原子性; 在一致性方面,多副本之間需要保證單一副本一致性。
Hadoop數(shù)據(jù)塊將會(huì)被復(fù)制到多態(tài)服務(wù)器上以確保數(shù)據(jù)不會(huì)丟失。
Setup Hadoop (IBM/Cloudera/HortonWorks)
安裝Hadoop
包括社區(qū)版、商業(yè)發(fā)行版、以及各種云。
Name &Data Nodes
名稱和數(shù)據(jù)節(jié)點(diǎn)
HDFS通信分為兩部分,Client和NameNode &DataNode。
NameNode:管理HDFS的名稱空間和數(shù)據(jù)塊映射信息,處理client。NameNode有一個(gè)助手叫Secondary NameNode,負(fù)責(zé)鏡像備份和日志合并,負(fù)擔(dān)工作負(fù)載、提高容錯(cuò)性,誤刪數(shù)據(jù)的話這里也能恢復(fù),當(dāng)然更建議加trash。
DataNode:真正的數(shù)據(jù)節(jié)點(diǎn),存儲(chǔ)實(shí)際的數(shù)據(jù)。會(huì)和NameNode之間維持心跳。
Job &Task Tracker
任務(wù)跟蹤
JobTracker負(fù)責(zé)管理所有作業(yè),講作業(yè)分隔成一系列任務(wù),然而講任務(wù)指派給TaskTracker。你可以把它想象成經(jīng)理。
TaskTracker負(fù)責(zé)運(yùn)行Map任務(wù)和Reduce任務(wù),當(dāng)接收到JobTracker任務(wù)后干活、執(zhí)行、之后匯報(bào)任務(wù)狀態(tài)。你可以把它想象成員工。一臺(tái)服務(wù)器就是一個(gè)員工。
M/R Programming
Map/Reduce編程
MR的編程依賴JobTracker和TaskTracker。TaskTracker管理著Map和Reduce兩個(gè)類。我們可以把它想象成兩個(gè)函數(shù)。
MapTask引擎會(huì)將數(shù)據(jù)輸入給程序員編寫好的Map( )函數(shù),之后輸出數(shù)據(jù)寫入內(nèi)存/磁盤,ReduceTask引擎將Map( )函數(shù)的輸出數(shù)據(jù)合并排序后作為自己的輸入數(shù)據(jù),傳遞給reduce( ),轉(zhuǎn)換成新的輸出。然后獲得結(jié)果。
網(wǎng)絡(luò)上很多案例都通過(guò)統(tǒng)計(jì)詞頻解釋MR編程:
原始數(shù)據(jù)集分割后,Map函數(shù)對(duì)數(shù)據(jù)集的元素進(jìn)行操作,生成鍵-值對(duì)形式中間結(jié)果,這里就是{“word”,counts},Reduce函數(shù)對(duì)鍵-值對(duì)形式進(jìn)行計(jì)算,得到最終的結(jié)果。
Hadoop的核心思想是MapReduce,MapReduce的核心思想是shuffle。shuffle在中間起了什么作用呢?shuffle的意思是洗牌,在MR框架中,它代表的是把一組無(wú)規(guī)則的數(shù)據(jù)盡量轉(zhuǎn)換成一組具有一定規(guī)則的數(shù)據(jù)。
前面說(shuō)過(guò),map函數(shù)會(huì)將結(jié)果寫入到內(nèi)存,如果集群的任務(wù)有很多,損耗會(huì)非常厲害,shuffle就是減少這種損耗的。圖例中我們看到,map輸出了結(jié)果,此時(shí)放在緩存中,如果緩存不夠,會(huì)寫入到磁盤成為溢寫文件,為了性能考慮,系統(tǒng)會(huì)把多個(gè)key合并在一起,類似merge/group,圖例的合并就是{"Bear",[1,1]},{"Car",[1,1,1]},然后求和,等Map任務(wù)執(zhí)行完成,Reduce任務(wù)就直接讀取文件了。
另外,它也是造成數(shù)據(jù)傾斜的原因,就是某一個(gè)key的數(shù)量特別多,導(dǎo)致任務(wù)計(jì)算耗時(shí)過(guò)長(zhǎng)。
Sqoop: Loading Data in HDFS
Sqoop是一個(gè)工具,用來(lái)將傳統(tǒng)數(shù)據(jù)庫(kù)中的數(shù)據(jù)導(dǎo)入到Hadoop中。雖然Hadoop支持各種各樣的數(shù)據(jù),但它依舊需要和外部數(shù)據(jù)進(jìn)行交互。
Sqoop支持關(guān)系型數(shù)據(jù)庫(kù),MySQL和PostgreSQL經(jīng)過(guò)了優(yōu)化。如果要連其他數(shù)據(jù)庫(kù)例如NoSQL,需要另外下載連接器。導(dǎo)入時(shí)需要注意數(shù)據(jù)一致性。
Sqoop也支持導(dǎo)出,但是SQL有多種數(shù)據(jù)類型,例如String對(duì)應(yīng)的CHAR(64)和VARCHAR(200)等,必須確定這個(gè)類型可不可以使用。
Flue, Scribe: For Unstruct Data
2種日志相關(guān)的系統(tǒng),為了處理非結(jié)構(gòu)化數(shù)據(jù)。
SQL with Pig
利用Pig語(yǔ)言來(lái)進(jìn)行SQL操作。
Pig是一種探索大規(guī)模數(shù)據(jù)集的腳本語(yǔ)言,Pig是接近腳本方式去描述MapReduce。它和Hive的區(qū)別是,Pig用腳本語(yǔ)言解釋MR,Hive用SQL解釋MR。
它支持我們對(duì)加載出來(lái)的數(shù)據(jù)進(jìn)行排序、過(guò)濾、求和、分組(group by)、關(guān)聯(lián)(Joining)。并且支持自定義函數(shù)(UDF),它比Hive最大的優(yōu)勢(shì)在于靈活和速度。當(dāng)查詢邏輯非常復(fù)雜的時(shí)候,Hive的速度會(huì)很慢,甚至無(wú)法寫出來(lái),那么Pig就有用武之地了。
DWH with Hive
利用Hive來(lái)實(shí)現(xiàn)數(shù)據(jù)倉(cāng)庫(kù)
Hive提供了一種查詢語(yǔ)言,因?yàn)閭鹘y(tǒng)數(shù)據(jù)庫(kù)的SQL用戶遷移到Hadoop,讓他們學(xué)習(xí)底層的MR API是不可能的,所以Hive出現(xiàn)了,幫助SQL用戶們完成查詢?nèi)蝿?wù)。
Hive很適合做數(shù)據(jù)倉(cāng)庫(kù),它的特性適用于靜態(tài),SQL中的Insert、Update、Del等記錄操作不適用于Hive。
它還有一個(gè)缺點(diǎn),Hive查詢有延時(shí),因?yàn)樗脝?dòng)MR,這個(gè)時(shí)間消耗不少。傳統(tǒng)SQL數(shù)據(jù)庫(kù)簡(jiǎn)單查詢幾秒內(nèi)就能完成,Hive可能會(huì)花費(fèi)一分鐘。只有數(shù)據(jù)集足夠大,那么啟動(dòng)耗費(fèi)的時(shí)間就忽略不計(jì)。
故Hive適用的場(chǎng)景是每天凌晨跑當(dāng)天數(shù)據(jù)等等。它是類SQL語(yǔ)言,數(shù)據(jù)分析師能直接用,產(chǎn)品經(jīng)理能直接用,拎出一個(gè)大學(xué)生培訓(xùn)幾天也能用。效率快。
可以將Hive作通用查詢,而用Pig定制UDF,做各種復(fù)雜分析。Hive和MySQL語(yǔ)法最接近。
Scribe, Chukwa For Weblog
Scribe是Facebook開源的日志收集系統(tǒng),在Facebook內(nèi)部已經(jīng)得到的應(yīng)用。
Chukwa是一個(gè)開源的用于監(jiān)控大型分布式系統(tǒng)的數(shù)據(jù)收集系統(tǒng)。
Using Mahout
已經(jīng)介紹過(guò)了
Zookeeper Avro
Zookeeper,是Hadoop的一個(gè)重要組件,它被設(shè)計(jì)用來(lái)做協(xié)調(diào)服務(wù)的。主要是用來(lái)解決分布式應(yīng)用中經(jīng)常遇到的一些數(shù)據(jù)管理問(wèn)題,如:統(tǒng)一命名服務(wù)、狀態(tài)同步服務(wù)、集群管理、分布式應(yīng)用配置項(xiàng)的管理等。
Avro是Hadoop中的一個(gè)子項(xiàng)目,它是一個(gè)基于二進(jìn)制數(shù)據(jù)傳輸高性能的中間件。除外還有Kryo、protobuf等。
Storm: Hadoop Realtime
Storm是最新的一個(gè)開源框架
目的是大數(shù)據(jù)流的實(shí)時(shí)處理。它的特點(diǎn)是流,Hadoop的數(shù)據(jù)查詢,優(yōu)化的再好,也要基于HDFS進(jìn)行MR查詢,有沒有更快的方法呢?是有的。就是在數(shù)據(jù)產(chǎn)生時(shí)就去監(jiān)控日志,然后馬上進(jìn)行計(jì)算。比如頁(yè)面訪問(wèn),有人點(diǎn)擊一下,我計(jì)算就+1,再有人點(diǎn),+1。那么這個(gè)頁(yè)面的UV我也就能實(shí)時(shí)知道了。
Hadoop擅長(zhǎng)批處理,而Storm則是流式處理,吞吐肯定是Hadoop優(yōu),而時(shí)延肯定是Storm好。
Rhadoop, RHipe
將R和hadoop結(jié)合起來(lái)2種架構(gòu)。
RHadoop包含三個(gè)包(rmr,rhdfs,rhbase),分別對(duì)應(yīng)MapReduce,HDFS,HBase三個(gè)部分。
Spark還有個(gè)叫SparkR的。
rmr
RHadoop的一個(gè)包,和hadoop的MapReduce相關(guān)。
另外Hadoop的刪除命令也叫rmr,不知道作者是不是指代的這個(gè)……
Classandra
一種流行的NoSql數(shù)據(jù)庫(kù)
我們常常說(shuō)Cassandra是一個(gè)面向列(Column-Oriented)的數(shù)據(jù)庫(kù),其實(shí)這不完全對(duì)——數(shù)據(jù)是以松散結(jié)構(gòu)的多維哈希表存儲(chǔ)在數(shù)據(jù)庫(kù)中;所謂松散結(jié)構(gòu),是指每行數(shù)據(jù)可以有不同的列結(jié)構(gòu),而在關(guān)系型數(shù)據(jù)中,同一張表的所有行必須有相同的列。在Cassandra中可以使用一個(gè)唯一識(shí)別號(hào)訪問(wèn)行,所以我們可以更好理解為,Cassandra是一個(gè)帶索引的,面向行的存儲(chǔ)。
Cassandra只需要你定義一個(gè)邏輯上的容器(Keyspaces)裝載列族(Column Families)。
Cassandra適合快速開發(fā)、靈活部署及拓展、支持高IO。它和HBase互為競(jìng)爭(zhēng)對(duì)手,Cassandra+Spark vs HBase+Hadoop,Cassandra強(qiáng)調(diào)AP ,Hbase強(qiáng)調(diào)CP。
MongoDB, Neo4j
MongoDB是文檔型NoSQL數(shù)據(jù)庫(kù)。
MongoDB如果不涉及Join,會(huì)非常靈活和優(yōu)勢(shì)。舉一個(gè)我們最常見的電子商務(wù)網(wǎng)站作例子,不同的產(chǎn)品類目,產(chǎn)品規(guī)范、說(shuō)明和介紹都不一樣,電子產(chǎn)品尿布零食手機(jī)卡等等,在關(guān)系型數(shù)據(jù)庫(kù)中設(shè)計(jì)表結(jié)構(gòu)是災(zāi)難,但是在MongoDB中就能自定義拓展。
再放一張和關(guān)系型數(shù)據(jù)庫(kù)對(duì)比的哲學(xué)圖吧:
Neo4j是最流行的圖形數(shù)據(jù)庫(kù)。
圖形數(shù)據(jù)庫(kù)如其名字,允許數(shù)據(jù)以節(jié)點(diǎn)的形式,應(yīng)用圖形理論存儲(chǔ)實(shí)體之間的關(guān)系信息。
最常見的場(chǎng)景是社交關(guān)系鏈、凡是業(yè)務(wù)邏輯和關(guān)系帶點(diǎn)邊的都能用圖形數(shù)據(jù)庫(kù)。
跟關(guān)系數(shù)據(jù)庫(kù)相比,圖形數(shù)據(jù)庫(kù)最主要的優(yōu)點(diǎn)是解決了圖計(jì)算(業(yè)務(wù)邏輯)在關(guān)系數(shù)據(jù)庫(kù)上大量的join操作,比如讓你查詢:你媽媽的姐姐的舅舅的女兒的妹妹是誰(shuí)?這得寫幾個(gè)Join啊。但凡關(guān)系,join操作的代價(jià)是巨大的,而GraphDB能很快地給出結(jié)果。
——————
個(gè)人水平一般,內(nèi)容解讀不算好,可能部分內(nèi)容有錯(cuò)誤,歡迎指正。
本文寫的是文本挖掘、數(shù)據(jù)可視化和大數(shù)據(jù)。后續(xù)還只有一篇了。
?【第一篇】數(shù)據(jù)科學(xué)家成長(zhǎng)指南(上)點(diǎn)此進(jìn)入查看>>>
?【第三篇】數(shù)據(jù)科學(xué)家成長(zhǎng)指南(下)點(diǎn)此進(jìn)入查看>>>
注:本文作者秦路,版權(quán)著作權(quán)屬原創(chuàng)者所有,編輯:Fynlch(王培),數(shù)據(jù)觀微信公眾號(hào)(ID:cbdioreview) ,欲了解更多大數(shù)據(jù)行業(yè)相關(guān)資訊,可搜索數(shù)據(jù)觀(中國(guó)大數(shù)據(jù)產(chǎn)業(yè)觀察網(wǎng)www.21jieyan.cn)進(jìn)入查看。
責(zé)任編輯:王培