本文目錄一覽:
- 1、大數據如何入門
- 2、如何使用playframework連接MySQL資料庫
- 3、scala的SQL資料庫框架怎麼用比較好
- 4、大數據要學哪些課程?
- 5、大數據開發怎麼學習
- 6、scala變數能初始化為null嗎
大數據如何入門
首先我們要了解Java語言和Linux操作系統,這兩個是學習大數據的基礎,學習的順序不分前後。
大數據
Java :只要了解一些基礎即可,做大數據不需要很深的Java 技術,學java SE 就相當於有學習大數據基礎。
Linux:因為大數據相關軟體都是在Linux上運行的,所以Linux要學習的紮實一些,學好Linux對你快速掌握大數據相關技術會有很大的幫助,能讓你更好的理解hadoop、hive、hbase、spark等大數據軟體的運行環境和網路環境配置,能少踩很多坑,學會shell就能看懂腳本這樣能更容易理解和配置大數據集群。還能讓你對以後新出的大數據技術學習起來更快。
Hadoop:這是現在流行的大數據處理平台幾乎已經成為大數據的代名詞,所以這個是必學的。Hadoop裡面包括幾個組件HDFS、MapReduce和YARN,HDFS是存儲數據的地方就像我們電腦的硬碟一樣文件都存儲在這個上面,MapReduce是對數據進行處理計算的,它有個特點就是不管多大的數據只要給它時間它就能把數據跑完,但是時間可能不是很快所以它叫數據的批處理。
Zookeeper:這是個萬金油,安裝Hadoop的HA的時候就會用到它,以後的Hbase也會用到它。它一般用來存放一些相互協作的信息,這些信息比較小一般不會超過1M,都是使用它的軟體對它有依賴,對於我們個人來講只需要把它安裝正確,讓它正常的run起來就可以了。
Mysql:我們學習完大數據的處理了,接下來學習學習小數據的處理工具mysql資料庫,因為一會裝hive的時候要用到,mysql需要掌握到什麼層度那?你能在Linux上把它安裝好,運行起來,會配置簡單的許可權,修改root的密碼,創建資料庫。這裡主要的是學習SQL的語法,因為hive的語法和這個非常相似。
Sqoop:這個是用於把Mysql里的數據導入到Hadoop里的。當然你也可以不用這個,直接把Mysql數據表導出成文件再放到HDFS上也是一樣的,當然生產環境中使用要注意Mysql的壓力。
Hive:這個東西對於會SQL語法的來說就是神器,它能讓你處理大數據變的很簡單,不會再費勁的編寫MapReduce程序。有的人說Pig那?它和Pig差不多掌握一個就可以了。
Oozie:既然學會Hive了,我相信你一定需要這個東西,它可以幫你管理你的Hive或者MapReduce、Spark腳本,還能檢查你的程序是否執行正確,出錯了給你發報警並能幫你重試程序,最重要的是還能幫你配置任務的依賴關係。我相信你一定會喜歡上它的,不然你看著那一大堆腳本,和密密麻麻的crond是不是有種想屎的感覺。
Hbase:這是Hadoop生態體系中的NOSQL資料庫,他的數據是按照key和value的形式存儲的並且key是唯一的,所以它能用來做數據的排重,它與MYSQL相比能存儲的數據量大很多。所以他常被用於大數據處理完成之後的存儲目的地。
Kafka:這是個比較好用的隊列工具,隊列是幹嗎的?排隊買票你知道不?數據多了同樣也需要排隊處理,這樣與你協作的其它同學不會叫起來,你幹嗎給我這麼多的數據(比如好幾百G的文件)我怎麼處理得過來,你別怪他因為他不是搞大數據的,你可以跟他講我把數據放在隊列里你使用的時候一個個拿,這樣他就不在抱怨了馬上灰流流的去優化他的程序去了,因為處理不過來就是他的事情。而不是你給的問題。當然我們也可以利用這個工具來做線上實時數據的入庫或入HDFS,這時你可以與一個叫Flume的工具配合使用,它是專門用來提供對數據進行簡單處理,並寫到各種數據接受方(比如Kafka)的。
Spark:它是用來彌補基於MapReduce處理數據速度上的缺點,它的特點是把數據裝載到內存中計算而不是去讀慢的要死進化還特別慢的硬碟。特別適合做迭代運算,所以演算法流們特別稀飯它。它是用scala編寫的。Java語言或者Scala都可以操作它,因為它們都是用JVM的。
如何使用playframework連接MySQL資料庫
1、首先創建一個工程,名字為:HelloWorld;
不建議用IDE創建,因為現在IntelliJ idea和Eclipse做的Scala插件還不夠好用,開發中會出現很多問題,建議用typeSafe魔板創建。
2、打開工程的bulid.sbt文件;加上這麼一句:
3、然後將mysql的驅動也加上
在sbt中加入了新的依賴以後,一定要記得refresh一下,這樣sbt才能將新加的東西加入。
4、接下來,我們打開conf/application.conf文件,
將自己的資料庫鏈接信息添上去。
注意,如果想鏈接多個數據源,只需要修改「db.default.driver」就可以,注意「db.default.driver」中「default」是數據源的名字,可以修改。例如,你想創建一個「abc」數據源,就可以寫成「db.abc.driver」
,在代碼中獲取數據源的時候,就寫成DB.getDataSource(“abc”),如果想獲取默認數據源(default),可以直接寫成DB.getDataSource(),因為:
這是源碼,顯而易見了吧。而且通過源碼,可以知道,play用的資料庫鏈接池是BoneCP,這是一個很棒的資料庫連接池,比DBCP和C3P0要快很多,但是沒有HikariCP快,BoneCP的官方文檔是這麼說的:「It beats older connection pools such as C3P0 and DBCP but should now be considered deprecated in favour of HikariCP」不知道play以後會不會使用HikariCP作為資料庫連接池。而且,play的資料庫連接池是寫死的,沒法通過application.conf擴展資料庫連接池(可以用其他途徑擴展,如自己在sbt中依賴資料庫連接池,然後不通過配置文件,用資料庫本身的方法來獲取數據源實現連接。),個人感覺應該改良一下。
scala的SQL資料庫框架怎麼用比較好
以下是Twitter所使用的開源項目,簡要瀏覽之後,我覺得是一個很好的關於分散式架構,大數據,非同步網路傳輸(客戶端,服務端)學習的list,做個備份,以便後用。
1. 分析和搜索服務
Twitter的搜索服務每天支持超過10億次的查詢,其背後的開源項目包括:
Apache Cassandra:一套分散式NoSQL資料庫系統,以Amazon專有的完全分散式的Dynamo為基礎,結合了Google BigTable基於列族(Column Family)的數據模型,是一個網路社交雲計算方面理想的資料庫。該項目最初由Facebook開發,於2008開源並捐贈給Apache基金會。
Apache Hadoop:由Apache基金會所開發的分散式系統基礎架構,可使應用程序充分利用集群的威力高速運算和存儲,用戶可以在不了解分散式底層細節的情況下,開發分散式程序。
Apache Lucene:一個全文檢索引擎工具包,目的是為軟體開發人員提供一個簡單易用的工具包,以方便的在目標系統中實現全文檢索的功能,或者是以此為基礎建立起完整的全文檢索引擎。
Apache Pig:一個基於Hadoop的大規模數據分析平台,它提供的類SQL語言稱為Pig Latin,該語言的編譯器會把類SQL的數據分析請求轉換為一系列經過優化處理的MapReduce運算。Pig為複雜的海量數據並行計算提供了一個簡單的操作和編程介面。
2. 伺服器和存儲
Twitter需要將每天用戶發送的推文存儲到資料庫,並推送給其他相關的用戶。該過程用到的開源項目包括:
Linux:主要用於Twitter伺服器。
Memcached:主要用於Twitter的緩存基礎設施,作用是加速動態Web應用程序,減輕資料庫負載。
Mysql:流行的開源關係型資料庫,被Twitter大量用於存儲Twitter消息。
Node.js:一套用來編寫高性能網路伺服器的JavaScript工具包,在Twitter中用於隊列處理(接收推文並寫入資料庫),使伺服器能處理每個連接而不會阻塞通道。
3. Twitter工程師的工具箱
Apache Subversion:開源的版本控制系統
Git:一個分散式的版本控制系統
Eclipse:大名鼎鼎的Java IDE。
Gerrit:一個基於Web的代碼評審和項目管理的工具,主要面向基於Git版本控制系統的項目
Jenkins:一個持續集成引擎,主要用於持續、自動地構建/測試軟體項目,以及監控一些定時執行的任務
RSpec:一個BDD 測試工具
4. Twitter背後的編程語言和框架
OpenJDK:Java的開源版本。Twitter陸續將一些項目從Rails遷移到了Java。
Python:一種高效的動態解釋型Web編程語言。
Ruby和Ruby on Rails:Twitter最初主要由Ruby和Rails開發。
Scala:Twitter使用的主要應用編程語言之一,很多Twitter的基礎架構都是用Scala編寫。
Clojure:Clojure是一種運行在Java平台上的Lisp方言,在任何具備Java虛擬機的地方,都可以利用Lisp的強大功能。Twitter的大數據處理系統Storm就是基於Clojure。
Drupal:使用PHP語言編寫的開源內容管理框架(CMF),由內容管理系統(CMS)和PHP開發框架共同構成。Twitter的開發者社區基於Drupal構建。
Sinatra:一個輕量、快速的Ruby開發框架。
5. Twitter的前端解決方案
jQuery:全球使用最廣泛的JavaScript框架。
Less:一個使用廣泛的CSS預處理器,通過簡單的語法和變數對CSS進行擴展,可減少很多CSS的代碼量。
MooTools:一個簡潔、模塊化、面向對象的開源JavaScript框架,為開發者提供了一個跨瀏覽器的JS解決方案
Zepto.js:一個輕量級的Javascript框架,主要用於移動開發
6. Twitter服務開發框架
TwistedMatrix:一個Python 框架,用來開發非阻塞非同步的網路服務和應用程序。
Netty:一個非同步的、事件驅動的Web應用框架和工具,用於快速開發高性能、高可靠性的網路伺服器和客戶端程序。Netty目前作為Twitter的核心隊列Kestrel的通信模塊。
Apache Thrift:一個由Facebook開源的遠程服務調用框架,採用介面描述語言定義並創建服務,支持可擴展的跨語言服務開發,所包含的代碼生成引擎可以在多種語言中創建高效的、無縫的服務。
Important remarks: Thrift 這篇文章對Thrift做了綜合性的介紹,值得我思考的是這篇文章:「Thrift與其他框架的比較」,以前對於分散式系統中的服務開發框架,我一直在想為什麼不用rest或者webservice來進行通訊?而主流的卻是選擇RPC? 文章用圖表來展示了Thrift在網路傳輸性能上與rest-jason,xml的優勢。所以,是不是可以這樣理解:Thrift從協議的定義上就使用了高效壓縮數據格式TCompactProtocol(就算不用壓縮,只用TBinaryProtocol 二進位流的數據格式,其傳輸性能也高於jason和xml),從而避免了傳輸,序列化jason或者xml 造成的代價。
Twitter公司所開源的項目
Twitter從開源社區中獲得了大量的好處,而Twitter也在不斷地回饋社區,開源了大量基礎設施和工具,使得其他企業和開發者不必重新發明輪子,在這些開源項目的基礎上更加快速地實現自己所需。
1. 大數據處理
scalding:一個用於Cascading的Scala API。Cascading是一個構建於Hadoop上的API,用來創建複雜和容錯數據處理工作流,它抽象了集群拓撲結構和配置,允許開發者快速開發複雜分散式的應用,而不用考慮背後的MapReduce。
summingbird:允許開發者以類似於本地Scala或Java的方式編寫MapReduce程序,並在大部分著名的分散式MapReduce平台(包括Storm和Scalding)中執行它們。
2. 前端項目
Bootstrap:一個用於前端開發的工具包,包含了基本的CSS、HTML組件,包括排版、表單、按鈕、表格、網格、導航等。
TwUI:針對Mac平台的、支持硬體加速的UI框架,受到了UIKit的啟發。
typeahead.js:一個快速、全功能的自動完成庫
hogan.js:一個Mustache模板語言的編譯器
3. 後端服務
Twitter Mysql:Twitter的MySQL分支
Parquet:一種Twitter內部供Hadoop使用的列式存儲格式,為Hadoop生態系統中的所有項目提供支持高效率壓縮的列式數據表達,而且與數據處理框架、數據模型或編程語言無關。
Finagle:一個允許開發者使用Java、Scala或其他JVM語言來構建非同步RPC伺服器和客戶端的庫,主要用於Twitter的後端服務。
iago:一個負載生成器,用來在產品正式發布前做流量負載測試。
twemproxy:一個快速、輕量級的memcached和redis代理伺服器
zipkin:一個分散式的跟蹤系統。在Twitter中用於收集各個服務上的監控數據,並提供查詢介面。
4. Twitter基礎設施通用庫
commons:Twitter的Python、JVM公共庫
util:Twitter的一些可重用的代碼庫
cassovary:一個基於JVM的簡單的大圖形處理庫
大數據要學哪些課程?
《大數據實訓課程資料》百度網盤資源免費下載
鏈接:
?pwd=zxcv 提取碼:zxcv
大數據實訓課程資料|雲計算與虛擬化課程資源|課程實驗指導書綜合版|機器學習與演算法分析課程資源|Spark課程資源|Python課程資源|Hadoop技術課程資源|雲計算課程資料.zip|微課.zip|演算法建模與程序示例.zip|spark課程資源.zip|hadoop課程資源.zip|實驗指導書|教學視頻|教學PPT
大數據開發怎麼學習
按照下面五個階段開始學習,循序漸進!
階段一、大數據基礎——java語言基礎方面
(1)Java語言基礎
Java開發介紹、熟悉Eclipse開發工具、Java語言基礎、Java流程式控制制、Java字元串、Java數組與類和對象、數字處理類與核心技術、I/O與反射、多線程、Swing程序與集合類
需要大數據學習教程,關注我主頁有資料
(2) HTML、CSS與JavaScript
PC端網站布局、HTML5+CSS3基礎、WebApp頁面布局、原生JavaScript交互功能開發、Ajax非同步交互、jQuery應用
(3)JavaWeb和資料庫
資料庫、JavaWeb開發核心、JavaWeb開發內幕
階段二、 LinuxHadoop生態體系
Linux體系、Hadoop離線計算大綱、分散式資料庫Hbase、數據倉庫Hive、數據遷移工具Sqoop、Flume分散式日誌框架
階段三、 分散式計算框架和SparkStrom生態體系
(1)分散式計算框架
Python編程語言、Scala編程語言、Spark大數據處理、Spark—Streaming大數據處理、Spark—Mlib機器學習、Spark—GraphX 圖計算、實戰一:基於Spark的推薦系統(某一線公司真實項目)、實戰二:新浪網()
(2)storm技術架構體系
Storm原理與基礎、消息隊列kafka、Redis工具、zookeeper詳解、實戰一:日誌告警系統項目、實戰二:猜你喜歡推薦系統實戰
階段四、 大數據項目實戰(一線公司真實項目)
數據獲取、數據處理、數據分析、數據展現、數據應用
階段五、 大數據分析 —AI(人工智慧)
Data Analyze工作環境準備數據分析基礎、數據可視化、Python機器學習
1、Python機器學習2、圖像識別神經網路、自然語言處理社交網路處理、實戰項目:戶外設備識別分析
以上就是分享的大數據自學課程,祝願每一位小夥伴都能成為真正的大數據技術人才!
學習大數據,就來北京尚學堂,多年的大數據授課經驗,紮實的課程理論助你在大數據方面快人一步。
scala變數能初始化為null嗎
scala變數能初始化為null
?php
/*
* 配置連接資料庫信息
*/
$host=’localhost’;//主機
$user=’root’;//資料庫賬號
$password=”;//資料庫密碼
$database=’test’;//資料庫名
//打開資料庫連接
$db=mysqli_connect($host,$user,$password,$database);
//判斷連接是否成功
if($db){
$db-query(“set names utf8”);//設置UTF-8編碼(JSON的唯一編碼)
}else{
echo ‘DATABASE_CONNECTION_DIE’;//資料庫連接失敗
exit;
}
//sql查詢語句
$sql=”select id,name,sex,age from person”;
$result=$db-query($sql);
while($row=$result-fetch_assoc()){
$person_info[]=$row;//將取得的所有數據賦值給person_info數組
}
echo json_encode($person_info);//輸出JSON
?
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/155338.html