Hadoop_java與python的關(guān)系
python 是一門動態(tài)語言,
hadoop是一個分布式計算的框架, 是用java寫的。
他們是兩個層次的東西。
如果說非要有聯(lián)系, 就是python可以應用hadoop框架, 做分布式計算的開發(fā)。
但是語言和框架, 是可以自己拼裝的。 java也可以使用hadoop開發(fā)分布式計算,
python也可以用spark開發(fā)分布式計算,可以自己根據(jù)需求搭配
?
?
java與python區(qū)別:
一、python虛擬機沒有java強,java虛擬機是java的核心,python的核心是可以很方便地使用c語言函數(shù)或c++庫。
二、python是全動態(tài)性的,可以在運行時自己修改自己的代碼,java只能通過變通方法實現(xiàn)。python的變量是動態(tài)的,而java的變量是靜態(tài)的,需要事先聲明,所以java ide的代碼提示功能優(yōu)于python ide。
三,python的產(chǎn)生幾十年了,幾十年前面向過程是主流,所以用python有好多程序用的是面向過程設計方法,很多概念從c語言過來的,class在python中是后加入的,而java是為了實現(xiàn)沒有指針的c++(當年com組件用的引用記數(shù),java用的虛擬機),主要采用面向?qū)ο蟮脑O計方法,很多概念是oop的概念。面向過程,相對簡潔直觀,但容易設計出面條程序,面向?qū)ο?,相對抽象?yōu)雅,但容易過度抽象。
四,在實際使用的python入門簡單,但要學會用python干活,需要再學習python各種庫,pyhton的強大在于庫,為什么python的庫強大,原因是python的庫可以用python,c語言,c++等設計,再提供給python使用,所以無論gpu運行,神經(jīng)網(wǎng)絡,智能算法,數(shù)據(jù)分析,圖像處理,科學計算,各式各樣的庫在等著你用。而java沒有python那么多的開源庫,很多庫是商業(yè)公司內(nèi)部使用,或發(fā)布出來只是一個jar包,看不到原始代碼。python虛擬機因為編譯性沒有java的支持的好(或者說故意這么設計的),一般直接使用源碼(linux),或源碼簡單打個包(如pyexe)。
五、python有很多虛擬機實現(xiàn),如cython,Pyston,pypy,jython, IronPython等等,適合用于業(yè)務語言,或插件語言,或面向領(lǐng)域語言,而java因為虛擬機巨大,很少用于插件語言,發(fā)布也不方便。
六、java主要用于商業(yè)邏輯強的領(lǐng)域,如商城系統(tǒng),erp,oa,金融,保險等傳統(tǒng)數(shù)據(jù)庫事務領(lǐng)域,通過類似ssh框架事務代碼,對商業(yè)數(shù)據(jù)庫,如oralce,db2,sql server等支持較好,軟件工程理念較強,適合軟件工程式的多人開發(fā)模式。python主要用于web數(shù)據(jù)分析,科學計算,金融分析,信號分析,圖像算法,數(shù)學計算,統(tǒng)計分析,算法建模,服務器運維,自動化操作,快速開發(fā)理念強,適合快速開發(fā)團隊或個人敏捷模式。
七、java的商業(yè)化公司支持多,如sap,oracle,ibm等,有商業(yè)化的容器,中間件,企業(yè)框架ejb。python的開源組織支持多,如qt,linux,google,很多開源程序都支持python, 如pyqt,redis,spark等。
八、python用途最多的是腳本,java用途最多的是web,pyhotn是膠水,可以把各類不相關(guān)的東西粘在一起用,java是基佬,可以通過軟件工程組成幾百個人的團隊和你pk,商業(yè)化氣息重。不過我認為還是python強大,因為可以方便調(diào)用c或c++的庫,但軟件工程和商業(yè)化運作沒有java好,適合快捷開發(fā)。
九,關(guān)于錢。
如果你想寫程序賣軟件用java,可用上ibm服務器,上oracle數(shù)據(jù)庫,上EMC存儲,價格高,商業(yè)采購公司喜歡這種高大上。如果你要直接用程序生成金錢用python,python可以實現(xiàn)寬客金融,數(shù)據(jù)回測,炒股,炒期權(quán),炒黃金,炒比特幣,對沖套利,統(tǒng)計套利,有很多開源庫,數(shù)據(jù)分析庫,機器學習庫可以參考。
十、java和python,都可以運行于linux操作系統(tǒng),但很多l(xiāng)inux可以原生支持python,java需要自行安裝。java和python強于c#的原因大于支持linux,支持osx,支持unix,支持arm。java和python比c++受歡迎的原因在于不需要指針。
十一、對于移動互聯(lián)網(wǎng),python只能通過運行庫運行于安卓或ios,java原生支持安卓開發(fā),但不能用ios中。
十二、對于大數(shù)據(jù),hadoop用java開的, spark用Scala開發(fā),用python調(diào)用spark再分析更方便。
?
通俗的來說就是如下幾點
1. Python比Java簡單,學習成本低,開發(fā)效率高
2.Java運行效率高于Python,尤其是純Python開發(fā)的程序,效率極低
4.Java版本比較穩(wěn)定,Python2和3不兼容導致大量類庫失效
5.Java開發(fā)偏向于軟件工程,團隊協(xié)同,Python更適合小型開發(fā)
6.Java偏向于商業(yè)開發(fā),Python適合于數(shù)據(jù)分析
7.Java是一種靜態(tài)類型語言,Python是一種動態(tài)類型語言
8.Java中的所有變量需要先聲明(類型)才能使用,Python中的變量不需要聲明類型
9.Java編譯以后才能運行,Python直接就可以運行;
10.JAVA 里的塊用大括號對包括,Python 以冒號 + 四個空格縮進表示。
11.JAVA 的類型要聲明,Python 的類型不需要。
12.JAVA 每行語句以分號結(jié)束,Python 可以不寫分號。
13.實現(xiàn)同一功能時,JAVA 要敲的鍵盤次數(shù)一般要比 Python 多。
一些細節(jié)區(qū)別:
1.數(shù)
python只有四種數(shù)據(jù):整數(shù),長整數(shù)、浮點數(shù)和復數(shù)
java則有char,short,byte,int,long,float,double類型
2. 字符串
2.1. 字符串表示
Python中沒有表示單個常量字符串類型的char類型,其可以用單引號‘ ’或雙引號“ ”來表示一個字符串,也可以用三引號來表示一個多行字符串
Java中char表示單個字符,String表示一個字符串,常量字符或字符串用雙引號“ ”表示
2.2. 多行字符串
Python在字符串末尾加上反斜杠(/)表示字符串在下一行繼續(xù)
Java用加號(+)表示字符串在下一行繼續(xù)
2.3. Python中其它的表示方法
Python中還有可以在字符串前加前綴r或R:表示自然字符串,即不對字符串做轉(zhuǎn)移處理比java方便
Python可以加前綴u或U:表示unicode字符串
注意: Python 中的__init__()方法類似與Java中的構(gòu)造函數(shù),Java構(gòu)造函數(shù)中的self默認存在,不需要在構(gòu)造函數(shù)聲明的時候進行顯示指明,但是Python需要在__init__()函數(shù)中顯示指明(但是ID調(diào)用時不用顯示進行self傳遞)。
3. 操作符
Python中**表示冪計算,如果 X**y表示 Xy
Python中//表示整除,即商的整數(shù)部分
Python中~表示按位翻轉(zhuǎn),~x就是-(x+1)
4. 對象的序列化表示
Python中可以使用str()或repr()函數(shù)來實現(xiàn)對象的序列化
Java中通過toString()方法來實現(xiàn)對象的序列化
Hadoop簡介
Hadoop是一個由Apache基金會所開發(fā)的分布式系統(tǒng)基礎架構(gòu)。
用戶可以在不了解分布式底層細節(jié)的情況下,開發(fā)分布式程序。充分利用集群的威力進行高速運算和存儲。
Hadoop實現(xiàn)了一個分布式文件系統(tǒng)(Hadoop Distributed File System),簡稱HDFS。HDFS有高容錯性的特點,并且設計用來部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)來訪問應用程序的數(shù)據(jù),適合那些有著超大數(shù)據(jù)集(large data set)的應用程序。HDFS放寬了(relax)POSIX的要求,可以以流的形式訪問(streaming access)文件系統(tǒng)中的數(shù)據(jù)。
Hadoop的框架最核心的設計就是:HDFS和MapReduce。HDFS為海量的數(shù)據(jù)提供了存儲,則MapReduce為海量的數(shù)據(jù)提供了計算。
Java簡介
Java是一門面向?qū)ο?a target="_blank">編程語言,不僅吸收了C++語言的各種優(yōu)點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特征。Java語言作為靜態(tài)面向?qū)ο缶幊陶Z言的代表,極好地實現(xiàn)了面向?qū)ο罄碚摚试S程序員以優(yōu)雅的思維方式進行復雜的編程。
Java具有簡單性、面向?qū)ο蟆⒎植际?、健壯性、安全性、?**立與可移植性、多線程、動態(tài)性等特點。Java可以編寫桌面應用程序、Web應用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應用程序等。
Python簡介
是一種面向?qū)ο蟮慕忉屝陀嬎銠C程序設計語言,由荷蘭人Guido van Rossum于1989年發(fā)明,第一個公開發(fā)行版發(fā)行于1991年。
Python是純粹的自由軟件, 源代碼和解釋器CPython遵循 GPL(GNU General Public License)協(xié)議 。Python語法簡潔清晰,特色之一是強制用空白符(white space)作為語句縮進。
Python 適合的領(lǐng)域:
1. Web網(wǎng)站和各種網(wǎng)絡服務;
2. 系統(tǒng)工具和腳本;
3. 作為“膠水”語言把其他語言開發(fā)的模塊包裝起來方便使用;
Python 和其他語言對比:
1. C 編譯為機器碼,運行速度非??欤a量非常多;
2. Java 編譯為字節(jié)碼,運行速度快,代碼量多;
3. Python解釋執(zhí)行,運行速度慢,代碼量少;
Python基本語法:
和java不同,不需要方法加 { } 定義決定一個代碼塊,Python對代碼縮進控制嚴格,基本可以通過縮進決定代碼塊。
關(guān)于變量:
1. 定義:無需聲明類型,且必須賦值;
2. 使用范圍:在變量前加兩個下劃線如:__content = “haha”代表該類變量私有,不加則默認公有.
?
評論