国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

為什么 Flink 拋棄了 Scala

這篇具有很好參考價值的文章主要介紹了為什么 Flink 拋棄了 Scala。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

曾經(jīng)紅遍一時的Scala

想當初Spark橫空出世之后,Scala簡直就是語言界的一顆璀璨新星,惹得大家紛紛側(cè)目,連Kafka這類技術(shù)框架也選擇用Scala語言進行開發(fā)重構(gòu)。
可如今,F(xiàn)link竟然公開宣布棄用Scala

在Flink1.18的官方文檔里,有一句非常嚴肅的話:所有的Flink Scala APIs已被標記為廢棄,且將在未來版本中予以移除。

All Flink Scala APIs are deprecated and will be removed in a future Flink version. You can still build your application in Scala, but you should move to the Java version of either the DataStream and/or Table API.

See FLIP-265 Deprecate and remove Scala API support

究竟為何Flink舍棄Scala?

為了一探究竟,我特地研究了FLIP-265 Deprecate and remove Scala API support的文檔,其中內(nèi)容如下。

Flink通過APIs方式來構(gòu)建DataStream和TableAPI程序。這些是用Java和Scala寫的。PythonAPI在底層使用JavaAPI。隨著時間的推移,F(xiàn)link社區(qū)的主要焦點已經(jīng)轉(zhuǎn)向JavaAPI,而Flink中的Scala支持與JavaAPI并不同步。舉幾個例子:

Flink仍然僅支持Scala2.12.7,如果要升級的畫,只能通過破壞兼容性升級到更高版本
截止到目前為止,F(xiàn)link還不支持Scala2.13
與Scala中的DataStreamAPI 相比,Java中的DataStreamAPI具有更多可用功能。例如Async I/O

Flink中Scala現(xiàn)狀可以總結(jié)為( 機翻 ):

大多數(shù)與Scala相關(guān)的貢獻都集中在阻止用戶在任何Scala版本中使用JavaAPI
Flink社區(qū)缺乏具有Scala知識的維護人員,可以幫助直接在Flink中轉(zhuǎn)發(fā)Scala支持
添加到Flink的新API接口首先是為Java創(chuàng)建的,在Scala中沒有或只有有限的支持
開源社區(qū)正在制定舉措來幫助Flink中的Scala支持,例如https://github.com/ariskk/flink4s(為Scala3用戶包裝JavaAPI)和https://github.com/findify/flink-adt(取代了flink-scala 中的TypeInformation派生機制)

至于Scala版本之間的兼容性為何總是那么差,其實很簡單:

當年Scala剛創(chuàng)出個頭角時,并未面臨著保持兼容性的壓力,因為那時的它并不吃香,也未受到大型企業(yè)的青睞。正是這種無人關(guān)注的狀態(tài),使得維持兼容性變得無所謂。直至Scala 2.7.x版本前后,它開始呈現(xiàn)出崛起之勢,一些新興企業(yè),比如Twitter,紛紛將其作為首選,由此一來,向后兼容性才成了頭等大事。

在Scala 2.8.0開始起航之時,該語言引入了一套特殊規(guī)則以最大程度上保持兼容性。對于Scala2來說,版本劃分更為明確:2.major.minor,只要主版本保持不變,次要版本之間就能做到完美兼容。主版本的跨越往往會破壞二進制兼容性,也就意味著編譯生成的目標代碼可能存在差異。

我曾與業(yè)界大佬咨詢過這個問題,他的回答是:主版本跨度導致二進制兼容性遭受破壞的根本原因在于,JVM字節(jié)碼并不是特別為Scala而生的,而是專為Java量身定做。當Scala引入新的特性時,JVM并不會主動調(diào)整以支持這些新功能,因此Scala必須在編譯器生成的字節(jié)碼中實現(xiàn),

另外,當呼聲極高的Java8集錦登場之際,Java和JVM攜手新增了諸多新功能,這些新功能需要改變 Scala的執(zhí)行機制,以便更好地與Java8代碼相互融合,這也破壞了二進制兼容性。

但Scala3將引入一個特定的Scala的中間“字節(jié)碼”,這將允許不同的版本保持彼此的兼容性。
破案

Flink拋棄Scala的主要原因是因為,社區(qū)缺少Scala相關(guān)的人員,并且新的Api都是Java的,另外因為兼容性問題,Scala和JavaApi的發(fā)展并不同步。綜上,F(xiàn)link拋棄Scala

為什么選擇Java作為Apache Flink的首選API

選擇Java作為Apache Flink的首選API,是因為Java提供了一個穩(wěn)定可靠的平臺,適合大規(guī)模的計算和流處理。Java擁有豐富的庫和工具,可以幫助開發(fā)者更高效地實現(xiàn)各種計算邏輯。此外,Java的生態(tài)系統(tǒng)也非常龐大,包含了很多優(yōu)秀的工具和庫,使開發(fā)者能夠更輕松地開發(fā)和維護Flink應用。Java的可移植性和跨平臺性也是其受歡迎的原因之一。無論開發(fā)者身處何地,他們都可以使用Java開發(fā)Flink應用,并且在不同的平臺上進行部署和運行。另外,Java社區(qū)的活躍程度也是不容忽視的,Java的開發(fā)者群體龐大且經(jīng)驗豐富,他們可以為Flink提供寶貴的支持和指導,從而幫助用戶更好地使用和優(yōu)化Flink的功能。總的來說,Apache Flink選擇使用Java API,是基于Java的穩(wěn)定性、可移植性、生態(tài)系統(tǒng)、社區(qū)活躍度等方面的綜合考量文章來源地址http://www.zghlxwxcb.cn/news/detail-759131.html

到了這里,關(guān)于為什么 Flink 拋棄了 Scala的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關(guān)文章

  • 為什么Flink-CDC讀取Decimal等數(shù)值類型變成了非數(shù)值字符串

    為什么Flink-CDC讀取Decimal等數(shù)值類型變成了非數(shù)值字符串

    每遇到一個問題,在經(jīng)過努力研究明白之后,總想寫點東西記錄。怎奈又沒這個好習慣,過了一兩天這個激情就沒了,想寫也寫不出來了。最近在做一個flink-cdc采集數(shù)據(jù)的測試和產(chǎn)品化開發(fā),遇到一個數(shù)據(jù)轉(zhuǎn)換的問題,折騰了我兩個早上,有些心血來潮,就記錄一下吧,對我

    2023年04月09日
    瀏覽(27)
  • 【狀態(tài)管理|概述】Flink的狀態(tài)管理:為什么需要state、怎么保存state、對于state過大怎么處理

    按照數(shù)據(jù)的劃分和擴張方式,F(xiàn)link中大致分為2類: Keyed States:記錄每個Key對應的狀態(tài)值 因為一個任務的并行度有多少,就會有多少個子任務,當key的范圍大于并行度時,就會出現(xiàn)一個subTask上可能包含多個Key(),但不同Task上不會出現(xiàn)相同的Key(解決了shuffle的問題?) ? 常

    2024年02月01日
    瀏覽(19)
  • 為什么說新一代流處理器Flink是第三代流處理器(論點:發(fā)展歷史、區(qū)別、適用場景)

    ???????Flink 被認為是第三代流處理器,這是因為 Flink 在設計時參考了前兩代流處理器的經(jīng)驗教訓并引入了一些新的技術(shù)和思想,從而使得 Flink 具有更高的性能和更廣泛的應用場景。下面我?guī)Т蠹伊私庖幌铝魈幚砥鲝牡谝淮降谌陌l(fā)展歷史。 ???????對于有狀態(tài)的流

    2024年02月03日
    瀏覽(27)
  • 3. Apache HBase 為什么快?

    Apache HBase 之所以快速,主要歸功于其設計和實現(xiàn)的幾個關(guān)鍵特性和優(yōu)化。 下面是一些重要的原因: 分布式架構(gòu):HBase是一個分布式數(shù)據(jù)庫,數(shù)據(jù)存儲在多個節(jié)點上,可以水平擴展。這使得HBase能夠處理大規(guī)模數(shù)據(jù),并且能夠通過添加更多的服務器節(jié)點來提高性能。 列式存儲

    2024年02月09日
    瀏覽(24)
  • 1.什么是Apache Flink?

    1.什么是Apache Flink?

    Flink專欄目錄(點擊進入…) 每個人的人生都只有一次機會,不要用最寶貴的青春為別人而活。 愿在試錯中不斷成長。 快來加入我們的互動學習群吧,與我們一起成長和進步吧! QQ交流群: 948912943 Apache Flink是一個框架和 分布式處理引擎 ,用于對無界和有界數(shù)據(jù)流進行狀態(tài)

    2024年04月14日
    瀏覽(16)
  • 為什么Apache Doris適合做大數(shù)據(jù)的復雜計算,MySQL不適合?

    為什么Apache Doris適合做大數(shù)據(jù)的復雜計算,MySQL不適合?

    經(jīng)常有小伙伴發(fā)出這類直擊靈魂的疑問: Q:“為什么Apache Doris適合做大數(shù)據(jù)的復雜計算,MySQL不適合?” A:“因為Apache Doris是OLAP,MySQL是OLTP啊!” Q:“SO?” A:“因為一個是AP場景的DB,一個是TP場景的DB啊!” Q:“SO?” … [emm] 要不先來簡單概述下 OLAP和OLTP : OLAP (

    2024年01月19日
    瀏覽(23)
  • Apache HttpClient庫編寫的Scala程序

    Apache HttpClient庫編寫的Scala程序

    Apache HttpClient庫編寫的Scala下載器程序,用于下載圖片。代碼如下: 程序首先導入所需的Apache HttpClient庫和HttpHost,HttpClient和HttpHead類。然后,程序創(chuàng)建一個名為 WeiboImageDownloader 的類,并在其中定義一個名為 main 的方法。在 main 方法中,程序首先定義服務器的主機名和端口號,

    2024年02月06日
    瀏覽(15)
  • A Beginner‘s Guide to Apache Kafka: 什么是Kafka、它為什么如此受歡迎、它在哪些場景下可以應用、以及一些基本概念和術(shù)語

    作者:禪與計算機程序設計藝術(shù) Apache Kafka(以下簡稱Kafka)是一個開源分布式流處理平臺,它被設計用來實時傳輸大量的數(shù)據(jù),從而能夠?qū)崟r的對數(shù)據(jù)進行處理并提取價值。本文通過梳理,引導讀者了解什么是Kafka、它為什么如此受歡迎、它在哪些場景下可以應用、以

    2024年02月09日
    瀏覽(23)
  • 什么是API網(wǎng)關(guān),解釋API網(wǎng)關(guān)的作用和特點?解釋什么是數(shù)據(jù)流處理,如Apache Flink和Spark Streaming的應用?

    API網(wǎng)關(guān)是一種在分布式系統(tǒng)中的組件,用于管理不同系統(tǒng)之間的通信和交互。API網(wǎng)關(guān)的作用是在不同系統(tǒng)之間提供統(tǒng)一的接口和協(xié)議,從而簡化系統(tǒng)之間的集成和互操作性。 API網(wǎng)關(guān)的特點包括: 路由和分發(fā)請求:API網(wǎng)關(guān)可以根據(jù)請求的URL、方法、參數(shù)等信息,將請求分發(fā)到

    2024年02月11日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包