大數據入門:Scala函數式編程

2020-12-17 成都加米谷大數據

在大數據的學習當中,學到Spark部分,就免不了需要Scala這門語言了,Scala是Spark框架的原生程式語言,想要真正把Spark搞懂,那麼對Scala自然也需要相應程度的掌握。今天的大數據入門分享,我們就來講講Scala函數式編程。提到Scala,首先會提到的一個概念,就是函數式編程,這也是Scala語言區別與其他程式語言的典型特徵。Scala是一門多範式(multi-paradigm)的程式語言,設計初衷是要集成面向對象編程和函數式編程的各種特性。

在大數據處理場景下,Scala語言有著相當的優勢——在實際運行中,Scala原始碼被編譯為Java字節碼,所以可以運行在JVM上,可以調用現有的Java類庫,併兼容現有的Java程序。命令式編程VS函數式編程命令式編程,程序邏輯的基本元素是:變量+操作符+控制結構,這些元素構成一條條的代碼指令,因此,稱之為命令式編程。函數式編程,程序邏輯由:map+匿名函數組成。整個代碼中,看不到變量、控制結構、操作符等元素,看到的只有函數,因此,函數式編程的本質就是:程序邏輯的基本元素是函數。

理解函數式編程命令式編程中,程序邏輯的基本元素是:變量+操作符+控制結構;函數式編程中,程序邏輯的基本元素是:函數;面向對象編程中,程序邏輯的基本元素是:對象+操作符+控制結構;大部分的程序邏輯,命令式編程和函數式編程都可以實現;命令式編程的思路更加偏向於計算機本身,而函數式編程的思路更偏向於人的思維;Scala提供了大量的特性,例如:val常量,匿名函數、高階函數、閉包、柯裡化等,來支持函數編程;函數式編程有利於程序自動並行化,只需對numList做一個簡單的數據劃分,將numList劃分成n個部分,每個部分都執行map()操作,最後匯總結果即可,這個工作是一個固定的模式,可以由機器來完成;編程時,要注意培養自己使用函數式編程的習慣,嘗試將邏輯抽象成函數,將函數作為程序邏輯的組成元素,同時,還可以多閱讀別人的代碼,如Spark的實現,吸取其中有益的經驗,久而久之,就可以寫出很專業的的函數式編程代碼。

編程方式的選擇Scala支持命令式編程、函數式編程、面向對象編程。那麼在實際編程中該如何選擇呢?在實踐中,編程方式的選擇,要以功能實現為第一要義。例如,面向對象支持多態、繼承,這些特性對於代碼復用、簡化邏輯有很大幫助,因此,有類似需求的時候,可以考慮面向對象編程;又比如,函數式編程對程序並行化非常友好,因此,有類似需求的時候,可以考慮函數式編程等等,此外,如類似數學推理的需求,用函數式編程也是比較合適的。切記:不可因為偏愛某種編程方式,而生搬硬套,為了編程而編程,忘記出發點,是不可取的。關於大數據入門,Scala函數式編程,以上就為大家做了簡單的介紹了。Spark框架在大數據技術生態當中,佔據著相當重要的地位,而涉及到Spark學習,也必然離不開Scala函數式編程的學習與掌握。

相關焦點

  • 函數式編程Scala詳細總結(Spark的程式語言)
    《大數據和人工智慧交流》頭條號向廣大初學者新增C 、Java 、Python 、Scala、javascript 等目前流行的計算機、大數據程式語言,希望大家以後關注本頭條號更多的內容。《大數據和人工智慧》頭條號方便有基礎讀者的同時照顧廣大沒入門的初學者。
  • Scala對於大數據開發重要嗎?Scala基礎學習建議
    對於大數據稍有了解的人應該知道,大數據主要的程式語言,是使用Java來完成的,而Java之外,掌握一定的Scala,在大數據開發學習當中,能夠更好地掌握相關技術框架。Scala作為一門面向對象的函數式程式語言,把面向對象編程與函數式編程結合起來,使得代碼更簡潔高效易於理解。
  • 大數據入門:Java和Scala編程對比
    在學習大數據之初,很多人都會對程式語言的學習有疑問,比如說大數據編程主要用什麼語言,在實際運用當中,大數據主流編程是Java,但是涉及到Spark、Kafka框架,還需要懂Scala。今天的大數據入門分享,我們就來對Java和Scala這兩門語言的編程做個對比。
  • 大數據入門:Scala大數據黃金語言
    在大數據的學習當中,關於程式語言選擇的部分,是很多人在學習初期非常關注的。在企業大數據平臺開發場景下,Java語言是主流選擇,其次涉及到Spark部分,就不得不提到Scala語言。今天的大數據入門分享,我們就具體來講一講大數據黃金語言Scala。
  • 函數式編程/lambda表達式入門
    函數式編程/lambda表達式入門本篇主要講解 lambda表達式的入門,涉及為什麼使用函數式編程,以及jdk8提供的函數式接口 和 接口的默認方法 等等1.什麼是命令式編程命令式編程就是我們去告訴程序如何實現
  • 函數式編程簡介—Lambda 表達式
    Java作為面向對象的程式語言,如果按照編程種類劃分屬於命令式編程(Imperative Programming)。常見的編程範式還有邏輯式編程(Logic Programming),函數式編程(Functional Programming)。
  • Scala隱式轉換入門實踐
    隱式轉換(Implicit Conversion)是Scala語言提供的一個強大的語法特性,是學習Scala必須要掌握的技能。一、Scala提供的隱式轉換函數Scala的隱式轉換無處不在。在實際開發過程中,常常會自動地使用隱式轉換。
  • 大數據分析工程師面試集錦2-Scala
    ,而很多大數據組件是由Scala開發的-如Spark和Kafka,所以相關的開發,Scala就成為了首選開發語言。,如其官網宣稱的:「Object-OrientedMeets Functional」,這一句當屬對Scala最抽象的精準描述,它把近二十年間大行其道的面向對象編程與舊而有之的函數式編程有機結合起來,形成其獨特的魔力,可以使你的代碼更簡潔高效易於理解。
  • Java函數式編程快速入門:Lambda表達式與Stream API
    函數式編程(Functional Programming)是一種編程範式。它已經有近60年的歷史,因其更適合做並行計算,近年來開始受到大數據開發者的廣泛關注。Python、JavaScript等當紅語言對函數式編程支持都不錯,Scala更是以函數式編程的優勢在大數據領域攻城略地,即使是老牌的Java為了適應函數式編程,也加大對函數式編程的支持。
  • java8的函數式編程解析
    其實在java8就已經有java的函數式編程寫法,只是難度較大,大家都習慣了對象式用法,但在其它語言中都有函數式的用法,如js,scala,函數式其實是抽象到極致的思想。什麼是函數式編程 函數式編程並不是Java新提出的概念,其與指令編程相比,強調函數的計算比指令的計算更重要;與過程化編程相比,其中函數的計算可以隨時調用。
  • 函數式編程
    來源:酷殼網-陳皓 連結:https://coolshell.cn/articles/10822.html當我們說起函數式編程來說,我們會看到如下函數式編程的長相:函數式編程的三大特性函數式編程的幾個技術map & reduce:這個技術不用多說了,函數式編程最常見的技術就是對一個集合做Map和Reduce操作。這比起過程式的語言來說,在代碼上要更容易閱讀。
  • Scala之伴生類與伴生對象
    Scala應用特點在大數據開發中,scala程式語言應用廣泛,Spark計算引擎底層就是使用scala語言編寫的,因此使用scala編寫Spark程序非常方便。Scala相比Java,其是完全面向對象的,支持函數式編程和鏈式編程,代碼簡潔度大大提高。Flink也支持Scala語言。
  • 我拿到了阿里大牛(清華畢業生)總結的大數據學習路線+視頻教程
    三,大數據工程師針對角色一:大數據工程說,對應的工作崗位就叫大數據工程師,對於大數據工程師而言,您至少要掌握以下技能:linux基礎因為大數據體系,基本都是開源軟體,這些開源軟體都是在開源的linux系統上運行的,所以你必須會基本的linux操作,比如用戶管理,權限,shell編程之類的
  • 函數式編程那些事兒
    函數式編程是一種編程範式,在其中它試圖將每個函數都綁定到純數學函數中。這是一種聲明式的編程風格,著重於解決什麼而不是如何解決。Clojure,Common Lisp,Erlang,Haskell和Scala是遵循函數式編程方法的一些著名程式語言。編程範例基於lambda演算,下面簡要說明:Lambda演算它使用表達式來代替語句。
  • Scala語言基礎:中綴表示法
    在Scala 編程規範中,有一些很有意思的規則,比如中綴表示法。合理地使用這些規則,可以幫助我們編寫更簡潔更有效的代碼。gt;println(x))由於println函數本身就只接受一個參數中綴表示法也是Scala中推薦的具有函數式方法的寫法
  • 寫Python 代碼不可不知的函數式編程技術
    選自 Medium作者:Raivat Shah參與:魔王、Jamin本文對 Python 中的函數式編程技術進行了簡單的入門介紹。近來,越來越多人使用函數式編程(functional programming)。因此,很多傳統的命令式語言(如 Java 和 Python)開始支持函數式編程技術。本文對 Python 中的函數式編程技術進行了簡單的入門介紹。本文適合對函數式編程有基本了解的讀者。
  • 程式語言 Scala 2.10.5 發布 - OSCHINA - 中文開源技術交流社區
    Scala是一門現代的多範式程式語言,志在以簡練、優雅及類型安全的方式來表達常用編程模式。它平滑地集成了面向對象和函數語言的特性。Scala是函數式的: Scala還是一個函數式語言,在某種意義上來講所有函數都是數值。Scala為定義匿名函數提供了一種輕量級的語法,它支持高階(higher- order)函數、允許函數嵌套、支持局部套用(currying)。Scala的case類及其內置支持的模式匹配模型代數類型在許多函數式程式語言中 都被使用。
  • Spark憑什麼成為大數據領域必備計算引擎?
    Spark基於一套統一的數據模型(RDD)和編程模型(Trans-foration /Action)之上,構建出了Spark SQL、Spark Streaming、Spark MLibs等多個分支,其功能涵蓋了大數據的多個領域。作為一個後起之秀以及天然擁有的優勢,Spark成為了目前開源社區最為火爆的一款分布式內存計算引擎。
  • Java如何支持函數式編程?
    函數式編程並非一個很新的東西,早在50多年前就已經出現了。近幾年,函數式編程越來越被人關注,出現了很多新的函數式程式語言,比如Clojure、Scala、Erlang等。一些非函數式程式語言也加入了很多特性、語法、類庫來支持函數式編程,比如Java、Python、Ruby、JavaScript等。除此之外,Google Guava也有對函數式編程的增強功能。
  • 函數式編程是未來的最佳編碼範例嗎?
    隨著機器學習和大數據的爆炸性增長,由於可以並行化純函數的簡單性,函數式編程正變得越來越流行。 數據分析任務和工作流的代碼也更易於遵循,測試和維護,使用功能範式有助於日後的使用。簡而言之,函數式編程需要為固定變量構建純函數並通過其響應更改狀態。 相反,其他程式語言具有通過更改程序中變量引用來更改應用程式狀態的能力。 您可以在本文中了解功能編程與面向對象程序的更多區別。由於其純粹的性質,函數式編程對於令人垂涎的任務(如機器學習和數據分析)印象深刻。