日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

2021年大数据常用语言Scala(一):Scala简介

發布時間:2023/11/28 生活经验 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2021年大数据常用语言Scala(一):Scala简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

一、Scala簡介

為什么使用scala

Scala對比Java

案例


一、Scala簡介

scala是運行在JVM上的多范式編程語言,同時支持面向對象和面向函數編程

  • 多范式:就是包含多種編程思想。目前主流的編程思想有4中,即面向對象、面向過程、面向函數、以及泛型
  • 面向函數一句話形容:函數也是一個對象,可以作為參數進行傳遞。

也就是:

?面向對象 :傳遞的參數是具體的對象或者值

?函數式編程:傳遞的參數可以是一個函數(處理邏輯)

  • 運行在JVM之上:

Scala程序編譯執行流程

就像學習MapReduce中, 各種序列化器. 類比一下, 比如: IntWritable 以及 Text , 都是把內容進行序列化, 也就是輸入不同, 輸出相同. 不同的輸入, 序列化為同樣格式的內容, 運行在hadoop上. 同理, 我們可以認為, scala 和 java 就類比有個 ScalaWritable 以及 JavaWritable. 負責對java 以及Scala進行序列化, 輸出是什么呢? 輸出就是我們的字節碼, 也就是 .class 文件. 用于運行在JVM之上.

早期,scala剛出現的時候,并沒有怎么引起重視,隨著Spark和Kafka這樣基于scala的大數據框架的興起,scala逐步進入大數據開發者的眼簾。scala的主要優勢是它的表達性

為什么使用scala

開發大數據應用程序(Spark程序、Flink程序)

Spark生態并不是要取代Hadoop生態,而是為了更好的拓展大數據生態,兩者結合.

而Spark由我們Scala開發的,我們學習Scala為了更好的去學習Spark。

表達能力強,一行代碼抵得上Java多行,開發速度快。 優雅,代碼簡介邏輯更加清晰。

兼容Java,可以訪問龐大的Java類庫,例如:操作mysql、redis、freemarker、activemq等等

Scala對比Java

通過下面的案例,對比分別使用Java和Scala實現的代碼數量

案例

定義三個實體類(用戶、訂單、商品)

Java代碼

/***?用戶實體類*/
public?class?User {private?String?name;private?List<Order>?orders;public?String?getName()?{return?name;}public?void?setName(String?name)?{this.name?=?name;}public?List<Order>?getOrders()?{return?orders;}public?void?setOrders(List<Order>?orders)?{this.orders?=?orders;}
}/***?訂單實體類*/
public?class?Order {private?int?id;private?List<Product>?products;public?int?getId()?{return?id;}public?void?setId(int?id)?{this.id?=?id;}public?List<Product>?getProducts()?{return?products;}public?void?setProducts(List<Product>?products)?{this.products?=?products;}
}/***?商品實體類*/
public?class?Product {private?int?id;private?String?category;public?int?getId()?{return?id;}public?void?setId(int?id)?{this.id?=?id;}public?String?getCategory()?{return?category;}public?void?setCategory(String?category)?{this.category?=?category;}
}

Scala代碼

case?class?User(var?name:String,?var?orders:List[Order]) // 用戶實體類
case?class?Order(var?id:Int,?var?products:List[Product]) // 訂單實體類
case?class?Product(var?id:Int,?var?category:String)?? // 商品實體類

總結

以上是生活随笔為你收集整理的2021年大数据常用语言Scala(一):Scala简介的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。