顯示具有 Hadoop 標籤的文章。 顯示所有文章
顯示具有 Hadoop 標籤的文章。 顯示所有文章

2017年3月5日 星期日

2017年台灣巨量資料(大數據)、資料科學家相關課程


很快的新的一年又開始了,筆者已經持續整理資料科學相關課程長達三年,今年也一樣整理相關課程與上課時間給有需要的朋友查詢。


工研院

資策會

中國生產力中心

三星課程網

臺灣資料科學協會


筆者整理這幾年來有發現一些心得,關於大數據或資料科學家課程,有越來越多元化的趨勢,另外除了資策會與工研院有長期開課之外,有不少新的公司或團體也有類似的課程出現,像是臺灣資料科學協會、中國生產力中心、三星課程網。

以上 如有遺漏 歡迎留言告知。



歷年資料參考:

2016年1月26日 星期二

2016年台灣巨量資料(大數據)、資料科學家相關課程 (更新時間2016.07.17)


很快的新的一年又開始了,筆者已經持續整理資料科學相關課程長達兩年,今年也一樣整理相關課程與上課時間給有需要的朋友查詢。



工研院
資策會
MIC產業顧問學院
三星課程網
木刻思
東吳大學



歷年資料參考:


2015年10月16日 星期五

透過Python與Spark做氣象大數據分析

In this project, we applied Spark in weather data analysis. This application includes uploading data to Object Storage, establishing RDD, making data filtered, calculating the average of data, printing results and sorting. Based on the uses mentioned above, Bluemix Spark includes many advantages. It can start to make data analysis within one minute. Users only need to push one to two button to make resource extension. (You can choose the memory and the number of hosts)  It is convenient for users to make data storage and access and they do not have to consider infrastructure problem.

Spark helps us enter data analysis environment  quickly, so that data scientists can create more values for the data.  

還記得幾年前接觸Hadoop的時候,碰到運算分析的問題,都要特別的去考量分散運算的問題,像是有些需要做迭代的演算法(如:基因演算法),作法上因為需要一直大量做Map Reduce,所以都會有效能的問題,因此最後大部分的做法都回到In-Memory上做計算。



一直到去年2014年11月Databricks團隊透過 Apache Spark國際資料排序基準競賽(Sort Benchmark Competition)(新聞),以不到30分鐘的時間排序高達100 TB的資料量,打破Hadoop的72分鐘,將分散式運算(Distributed Computing)產業的應用領域帶到另一個高峰。Spark源自於加州柏克萊大學的AMPLab,這個實驗室投入各項數據分析的應用已經很多年,像是資料探勘、機器學習、資料庫等等,其中一位成員Matei為Spark主要發展者,目前已經是麻省理工學院的助理教授,同時也是Databricks的技術長。

Spark目前依存在Hadoop Ecosystem裡面,像是Hortonworks (HDP2.2)開始就有包含Spark,而普遍的做法就是搭配Hadoop的Hbase或HDFS使用,搭配的語言包含Java、Scala、Python、R (1.4版本開始支援),這些都是目前資料科學家常使用的語言。

今天的主題並不是主要介紹Spark,而是於2015年8月剛IBM推出的Apache Spark for Bluemix。我們都知道資料科學家需要專注於分析上,因此在基礎設施上需要一個便利的環境讓資料科學家能夠使用。(筆者按:其他雲端服務亦有類似功能,但仍須安裝與設定,包含:AzureAWS)



而Bluxmix上的Spark就有這樣的潛力,他們把Jupyter Notebooks直接整合在Spark上面,讓資料科學家可以直接進行計算與分析,在儲存方面則採用Swift Object Storage的檔案儲存方式,方便做存取之用。如下圖所示,資料科學家只需要在Jupyter Notebooks上面直接下指令,就可以與資料進行互動,完全不需要擔心基礎設施的問題。

筆者接下來就進行簡單的實作透過Python語言體驗一下Apache Spark for Bluemix

首先我們必須申請Bluemix的帳號,登入後進入下面網址:
https://console.ng.bluemix.net/catalog/apache-spark-starter/

步驟一、
接著就會看到下圖,接下來選擇右邊的「Apache Spark」,並點選Create進行Deploy。

步驟二、

不到一分鐘,就會看到已經佈署好的Spark,同時他也把Object Storage也整合完成,同時我們也可在Instances與Memory Quota上面直接調整我們想要的Spark分散主機數量,以及每一台的記憶體多寡。最後我們就可以透過上方Routes旁的網址,直接進入Spark的畫面。
步驟三、
進入後,直接點選右邊的Launch即可登入。


步驟四、
進入之後會出現Jupyter Notebooks需要做帳號密碼的輸入,我們可以回到前面步驟二的畫面中找到下圖所示的密碼資訊,它放在Environment Variables裡面的app_pw裡面。

步驟五、
接著我們就可以直接進入Jupyter Notebooks直接做分析! 
首先我們到國際氣候數據網站(National Climatic Data website)進行天氣資料下載,如下圖所示。





步驟六、
使用ZIP將檔案進行解壓縮,得到2015.csv檔案,因為檔案內容相當大,透過Excel打開會很久,筆者這邊是使用Sublime Text把檔案打開,在第一行加入「STATION, DATE, METRIC, VALUE, C5, C6, C7, C8」,如下圖所示:

步驟七、
回到步驟三的頁面,點選右下角的Manage Files,我們要把csv檔案上傳到Bluemix Object Storage,如下圖紅框所示:

步驟八、
Object Storage的密碼與Jupyter Notebooks登入密碼相同,我們輸入後就到右邊「+」的符號進行新增資料,並填入ClimateDataForTutorial,建立內容,完成後就會如下圖這樣呈現:

步驟九、
點選我們建立的ClimateDataForTutorial,上傳資料集,如下圖所示:
步驟十、
從這個階段開始,我們將開始進行資料分析,下面操作程式碼都已內建在Jupyter Notebooks上面,所以讀者只要照著操作,基本上不會有太大的問題,如果需要筆者的程式碼,請參考筆者GitHub,如果您想自己安裝Spark,也可參考這裡

首先我們先設定資料路徑,Spark的資料結構名為彈性分佈式數據集(Resilient Distributed Dataset 簡稱RDD),Spark透過RDD將資料進行分區儲存與處理,因此我們透過sc.textFile這個指令就可以建立RDD,接著在輸入weather.count()就可以查看整個資料集筆數,如下圖所示,2015.csv有超過兩千萬筆資料。

步驟十一、
接下來透過Lambda指令建立一個匿名函數(Anonymous functions),將line : line.split(",")結果進行回傳,將資料改成行並以逗號做分割,透過map產生一個新的RDD,叫做weatherParse,如下圖所示:
步驟十二、
透過filter抓取降雨量(PRCP)的資料,獲得weatherPrecp資料,接著將資料做個整理,一樣透過map加上Lambda將資料轉換產生新的RDD為weatherPrecpCountByKey如下圖所示:
步驟十三、
接著透過reduceByKey,將把個Key的相同元素做一個reduce的動作,譬如說我們RDD資料有(A,2)、(B,2)、(A,5),我們想把它做x + y的動作,那reduceByKey就會產生(A,7)、(B,2)的結果。同樣地用到這裡,是希望將前面整理好的氣象站降雨量資料,做某一些特定動作,在這裡我們一樣做加總,並產生新的RDD為weatherPrecpAddByKey如下圖所示:


步驟十三、
接著我們將資料做平均的計算,一樣透過map搭配計算公式的方式取得每個氣象站的平均值,產生名為weatherAverages的RDD。

步驟十四、
到這一步基本上都已取得各氣象站的平均降雨量,接著我們只要印出來即可。透過下面指令的動作,我們可以獲得前10筆的資料,結果如下圖所示:
for pair in weatherAverages.top(10):
    print "Station %s had average precipitations of %f" % (pair[0],pair[1])

步驟十五、
我們再透過下面指令做降冪排序的動作,由大排到小,結果如圖所示:
for pair in weatherAverages.map(lambda (x,y):  (y,x)).top(10):
    print "Station %s had average precipitations of %f" % (pair[1],pair[0])

完成了簡單的資料讀取與處理。


透過上面實作,我們完成了幾個部分,包含上傳資料到Object Storage、建立RDD資料、將資料做過濾、將資料進行平均的計算、以及印出結果與排序。綜合以上使用,筆者整理Bluemix Spark特色如下:
  1. 不到1分鐘就可以開始進行資料科學運算
  2. 只有1~2個按鈕就可以資源擴展 (可自選記憶體與主機數量)
  3. 便利的資料儲存與取用
  4. 不用顧慮基礎設施問題



2015年7月29日 星期三

50個資料科學工具速查表(R、Python、Hadoop、Spark、Machine learning)

以下為國外整理的資料科學工具速查表,包含常見的工具R、Python、Hadoop、Spark,以及機器學習(Machine Learning)理論。


  1. R
  2. Python
  3. SQL
  4. Hadoop
  5. Spark
  6. Machine learning

2015年5月7日 星期四

2015年台灣巨量資料(大數據)、資料科學家相關課程

今年又開始看到許多巨量資料、資料科學家的相關課程持續出現,因此筆者整理一下,條列如下,方便大家去規劃自己的學習時間:


工研院
  1. 巨量資料分析應用與實作班(2015/05/13)
  2. 文字資料探勘與網路資料分析實作(2015/06/02)
  3. 資料探勘與R軟體應用實務II(2015/06/16)

資策會
  1. 文字資料探勘實作班(2015/5/16、5/17)
  2. R軟體與財金資料分析(2015/5/23、5/24)
  3. Spark巨量資料分析實務班(2015/5/30、5/31)
  4. 巨量資料分析-使用RHadoop (2015/6/6、6/7)
  5. Python資料探勘實作 (2015/6/13、6/14)
  6. R軟體與資料視覺化(2015/ 6/27~6/28)
  7. Big Data之處理與分析實務班(2015/7/4~7/5)
  8. R軟體實作班(2015/7/11~7/12)
  9. R軟體與資料探勘(2015/7/25~7/26)
  10. Elasticsearch分散式系統實務班 (2015/8/1、8/2)
  11. R軟體與網頁資料擷取應用(2015/8/22、8/23)
  12. Big Data之處理與分析(Hadoop)進階班(2015/10/17~10/18)
知意圖(Etu)
  1. 軟體開發者的 Hadoop 第一天 (2015/05/18)
  2. 資料分析者的 RHadoop 第一天 (2015/05/29)
  3. 軟體開發者前進 Pig (2015/06/05)
  4. 軟體開發者前進 Hive (2015/06/09)
  5. 軟體開發者前進 NoSQL-HBase (2015/06/25)
智庫驅動DSP
  1. A2: 資料分析進階班 (2015/5/23、24、30、31)
  2. E1: 資料工程基礎班(2015/7/4、5、11、12)
  3. 資料爬理析 Python 實戰班(2015/8/1、2、8、9)
  4. E1: 資料工程基礎班 (2015/11/14、15、21、22)
  5. 模型思考團訓班 Analytical thinking team training (2015/10/24, 25)
  6. 資料工程團訓班 Data Engineer training program (E1) (2015/11/14152122)
  7. 資料思考團訓班 Data thinking team training (2015/12/561213)
巨匠電腦
  1. Big Data實務分析與應用(持續開設中)
臺灣資料科學與商業應用協會

MIC產業顧問學院
  1. SAS教育訓練
Agilearning.IO

2014年10月3日 星期五

什麼是大數據的新架構「資料湖泊」?

隨著資訊科技的發達,企業開始面臨大量數據的儲存問題。過去許多企業從導入資料庫,到導入 資料倉儲,甚至商業智慧。以面對不斷增長的資料以及資料的應用問題,但資料持續增加,傳統架構將可能不敷使用。

因此有個新名詞「資料湖泊(Data Lake)」(又稱數據湖泊、DL)因應而生。該名詞於2011年最早出現在富比士(Forbes)雜誌,「Big Data Requires a Big, New Architecture」一文中。

資料湖泊(Data Lake)有別於我們提到的資料倉儲(Data Warehouse),資料倉儲(DW)的資料通常是品質較高,且是被預先處理過的資料。而資料湖泊(DL)則是儲存大量且龐雜的資料,作為資料素材(Data Material)的儲存池(Pool),以便未來分析使用。

因此資料湖泊(DL)使資料科學家在資料分析上擁有更大的分析彈性。

資料湖泊(DL)被提起後,EMC也開始使用這個名詞進行大數據產品的推廣。

今年1月富比士(Forbes)雜誌的「The Data Lake Dream」一文中,提到了資料湖泊(DL)成熟度的分為四級,筆者將圖片重新翻譯繪製並整理如下:

圖一:資料湖泊成熟度第一級

首先是成熟度第一級「尚未導入DL」,紅色為應用服務(資料庫),綠色為資料倉儲,部分資料間互相串接,部分資料傳遞到資料倉儲進行分析。該架構也是目前企業普遍的資料架構,各個資料庫相互獨立,只有少部分資料庫整理資料後,傳到資料倉儲做分析應用。此成熟度有3個重點:
  1. 企業所有應用服務(資料庫)都各別獨立。
  2. 僅部分資料庫將資料傳遞到資料倉儲。
  3. 資料科學家透過資料倉儲進行資料分析。

圖二:資料湖泊成熟度第二級

當進入到成熟度第二級「導入Hadoop」,紅色為應用服務(資料庫),綠色為資料倉儲,藍色為Hadoop、深藍色為資料分析器。這時候資料庫開始把部分資料往Hadoop進行傳遞,資料科學家可透過Hadoop進行ETL(資料萃取、轉換、讀取),提升分析效率。本成熟度4個重點:
  1. 企業的應用服務(資料庫),開始將部份資料儲存到Hadoop。
  2. Hadoop開始透過MapReduce處理資料。
  3. 資料科學家使用Hadoop進行ETL接著放到資料倉儲或開發資料分析器。
  4. Hadoop處理好的資料傳回應用服務(資料庫)
圖三:資料湖泊成熟度第三級

進展到成熟度第三級「資料不斷增長的資料湖泊」,紅色為應用服務(資料庫),綠色為資料倉儲,藍色為Hadoop、深藍色為資料分析器。這階段Hadoop可以說是扮演資料中心的角色,負責儲存巨量、龐雜、高不確定的資料。本成熟度有4個重點:
  1. 所有應用服務(資料庫)都以Hadoop為中心進行串接。
  2. Hadoop開始整合外部的資料來源。
  3. 透過資料分析語言或工具(如:R、Python、Impala, Greenplum, Spark等) 與Hadoop進行互動。
  4. Hadoop成為所有資料儲存的目的地,以便利企業進行資料治理(Data Governance)。


圖四:資料湖泊成熟度第四級

最後到成熟度第四級「資料湖泊與應用雲端平台」,目前只有少部分公司的資料規模可以做到,像是Google、Amazon、Alibaba、Facebook,因為這類型企業的資料已經大到一個規模,需要高效率的資料處理架構。這時候企業應用服務(APPs)的資料存取大部分都由Hadoop這邊作互動。在這個階段主要強調資料安全(Data Security)與資料治理(Data Governance)的部分,進行加強。本成熟度有4個重點:

  1. 所有的新的應用服務全都建立在Hadoop的平台上。
  2. 新的應用服務的資料庫佈署時間將減少。
  3. Hadoop成為分散式的資料運算平台,運用於資料管理與分析。
  4. Hadoop強化資料安全與資料治理的功能。
最後筆者整理了資料庫、資料倉儲、資料湖泊三個不同特性比較給大家參考。

表:資料科學實驗室整理

上述表格,可以讓我們快速了解這些不同的名詞之間的差異。在企業中,面對大數據的浪潮,除了掌握上述的成長模式,也要依據資料庫、資料倉儲、資料湖泊的特性,分別將這些資料儲存模式定位,賦予不同的任務。

至於資料湖泊一定要用Hadoop嗎? 筆者的回答是不一定,就好像現在SQL Database有Oracle、MySQL、MS SQL等,NoSQL Database有MongoDB、CouchDB等,永遠都有很多選擇。只是目前Hadoop是國際間處理大數據較為穩定的技術,國外近年的新創公司也都採用Hadoop協助企業做資料管理。

筆者認為只要掌握前面四級的資料湖泊成長模式,相信企業就可以很快掌握大數據的處理方向,至於使用什麼技術,技術的特性是什麼,下回再談。先讓我們一起迎接充滿數據的未來吧!

參考資料:




2014年9月17日 星期三

2014年國際Top 50新興大數據服務公司


美國知名通路媒體(CRN),最近整理了2014年國際排名前100大的新興Big Data公司,筆者根據國外論壇報導,整理排名前50名公司來進行分享。

這些公司有65%都在美國矽谷,公司的服務項目包大數據的基礎設施建設、數據分析、數據管理等。值得注意的是,這些公司的平均年齡都小於4年,且服務項目都各有專注,像是PivotalXplenty專門處理Big Data的基礎設施,而Alpine Data LabsNumerify為數據分析的專業。