2023年7月20日 星期四

去他的飛機!我「腳踏實地」環遊世界

出國旅遊是有錢又有閒的人們低調奢華的小確幸,但要像「去他的飛機」作者史蒂芬生一樣,不依靠飛機跑地球一圈,我想沒幾個人能辨得到。身為知名的旅遊作家,走過千山萬水算是稀疏平常的例行公事。基於對環遊世界的嚮往和對航空旅行的厭惡感,某天他和伴侶蘿貝卡突發奇想,要來趟「腳踏實地」的旅程,只依靠路運和海運工具達成二萬五千哩的長征。內容可不是十八世紀的法國古典冒險小說,史蒂史生和蘿貝卡用自身的經歷與風趣幽默的口吻,為讀者們呈現二十一世紀真人版的「環遊世界八十天」,如有雷同,純屬事實。

這不是趟坐著豪華遊艇喝著免費自助餐繞地球一圈兒戲般的挑戰,出發前他倆把居所退租、家具清空,抱著破斧沉舟的決心,帶著幾件輕便的衣服和小背包,就從美國東岸費城坐著載客貨輪,一路跨越大西洋到歐洲比利時的安特衛普。做為全球貿易核心元件的海運貨櫃船,由於自動化技術的進步,航運時必要的船員數量逐步減少。船公司腦筋動得快,多出的艙房用來載客,多多少少增加點業外收入。在貨輪旅行社的協助下,作者用九天的時間在貨船上體驗一望無際的汪洋、沒有的網路訊號的「類船員」作息,直到上岸的前兩天還經歷足以令人心智失常的三天濃霧!

安特衛普是舉世聞名的鑽石交易中心,當貨輪扺達比利時後他們就順道到處遊歷。不像搭飛機般瞬移到目的地,「路遊」能讓旅客玩遍路途中的大城小鎮,這是史蒂文生再三強調的旅遊醍醐味。接著坐有著法國高速列車(TGV)車頭的塔利斯線特快列車,一路奔向德國臨近波羅的海的城市羅斯托克。採用路運和船運旅行與直接坐飛機最大的差別是班次密集度,在銜接火車和貨船(渡輪)時,總會留有大量的緩衝時間,短則數小時多則幾天,讓你走走逛逛。他倆就在等出發去芬蘭的渡輪中間,花費十五個小時在這個前東德城市觀光和隨之的漫長等待。

搭上由前東歐集團國家愛沙尼亞渡輸公司的船前往芬蘭,既便是花了一人一百二十五美金,也只換得一個比飛機經濟艙還小的位子,座椅還是放在甲板底下沒開窗的小空間。四十個位子中摻雜著哭鬧的小孩與臭氣沖天的老人,要待足足二十四小時才能達到目的地,藉由鎮定劑和酒精的幫助,史蒂文生才能在這個被他們稱作「絕望房間」裡小憩。同時間在船上的旅遊雜誌看到十年前在波羅的海發生過愛沙尼亞號渡輸船難,造成八百多人喪命,絕對是讓史帝文生在船上酒吧多點幾杯調酒的原因。

踏上芬蘭的赫爾辛基後,又馬不停蹄地乘座雙體快速渡輪扺達愛沙尼亞的塔林市,一切都為了搭上舉世聞名的西伯利亞大鐵路,它橫跨歐洲與亞洲全長六千哩,一路從西方的莫斯科開到太平洋邊的海崴。莫斯科雖然是俄羅斯的首都,但有著不淨公廁與滿地垃圾的市容,舊時俄式官僚作風依然陰魂不散地盤據在此。事不關己與俄國人獨有的冷漠聳肩和皺眉,無時無刻出現在任何俄籍服務生身上。俄國火車票分三種艙等,有私人廂房的頭等艙、有四個鋪位廂房的二等艙,以及五十四個鋪位的三等艙!如果中途完全不下車,車程總共要花六天,史蒂文生倆則是選擇中途停靠幾站,能走走看看不同的城市和小鎮。

從海參威坐俄國渡輪到日本伏山港,搭乘地鐵到東京後,先去國技館觀看日本相撲比賽,隔天利用新幹線子彈列車抵達神戶港,邁向中國天津。現代化、整潔有秩序的日本,是他們一路上待過對旅客最舒適的國家,一切是那麼的,嗯…你知道的,「日本」。史帝史生他們當然可以直接從日本橫濱港出發,搭著前往美西的豪華渡輪,就此結束一趟半調子的環球旅程。但這可不符合官方承認的世界旅行,在定義上要貨真價實的完成這個任務必須達成三件事:
1.出發和歸返點在同一地點。2.以同一個方向跨越每條經線。3.經過兩個穿過直徑的對應點。
由於地球上大部份的面積是海洋,能達成第三項的地點實在有限,因此史帝史生將標準改成至少要走兩萬五千哩(地球圓周長)。所以他們決定先向南走,以陸路走到最接近赤道的地點後再走水路向西行。

高強度建設中的北京城,讓史帝文生大開眼界,但來的不是時候,在「黃金週」時前來中國,而他們居然運氣滿點地在連假期間買到前往越南邊境南寧的夜班火車票!中國式的大通鋪臥鋪車廂,塞滿著攜家帶眷的返鄉旅客,呈現出和日本地鐵截然不同的旅途風情。從越南北起河內南到西貢這段路,他們倆令人嘆為觀止地是報名自行車團,一路騎乘整個越南國境(騎不動有保姆車),再藉助巴士與租車經過柬埔寨到達泰國曼谷。在曼谷火車停駛的情況下,歷經波折才抵達新加坡,馬不停蹄訂到前往澳洲的船票,在最後一分鐘跳上即將出港的遊輪。

從澳洲東北岸的達爾文市一路自駕橫跨整個大陸,朝向西南岸的雪梨前進,光是這段經歷就是令人嘆為觀止的挑戰。而租車公司居然只收取一天一美金的費用!原來租車公司原本得把這台蘴田奇美轎車送到雪梨,如果有遊客自願幫忙把車開到目地的,何樂而不為?別以為這趟路有多麼詩情畫意,一望無際只能看到地平線的空曂道路,沿途不見任何人煙足跡,卻充斥著性好自殺會一頭撞向保險桿的厭世袋鼠,四天旅程下來,真的是恍如隔世。最後從澳洲墨爾本回到美國東岸洛杉機的行程,相形之下就有點乏善可陳。和一群富有高齡退休的白人們,吃著千篇一律的西式自助餐配著喝不盡的各式酒精飲品,初看有如天堂的環境,待久後越來越像陪著他們慢性自殺的臨終旅程,令史帝文生夫婦不寒而慄。

「去他的飛機」全書充滿機智風趣、自然不作用的口吻,分享一段勇氣十足能誇耀一輩子的壯遊。不依賴快速便捷的航空器,一步一腳印地投入體驗各地人文風情,是真正的「旅人」之心,也讓讀者們為之嚮往。就算人生中不見得可以有機會仿照同樣的旅程,只要翻閱這本「去他的飛機」,神遊史帝文生倆過程中的點滴,也別有一番滋味。

 

2023年7月18日 星期二

Spring實戰, 6/e

 

自看過Manning出版社的Spring Start Here後,一方面開始將Spring Boot和Spring MVC技術運用在手上的專案,另方面也對Spring框架除了Web開發以外的功能留下懸念,想找個閒暇時間,好好地研讀一下Spring Start Here的姐妹作Spring in Action。恰好工作上有需要研究反應式/響應式Web框架(Reactive Web Framework),簡單搜尋相關資料後,賓果!Spring生態系中有個Spring Webflux正符合要求,成為研讀Spring實戰, 6/e(簡體版)的契機。

在今日,Spring是Java語言中最重要的軟體框架,沒有之一。也因此Spring in Action成為Java開發者自學的祕笈。隨著Spring框架的不斷演進,特別在Spring 4後推出的Spring Boot,讓框架的設定與開發展現出跨次元般的進步。Spring in Action同步也出到了第六版,而簡體版的Spring實戰, 6/e是譯自第六版的Spring in Action,能確保學到最新、不過時的框架版本。此書也不囉嗦,不贅述像IOC、AOP這類Spring初級觀念,第一部份「Spring基礎」就切入應用範圍最廣的Web網站開發。歷經Spring Start Here的磨練,運用Spring Boot開發以Spring MVC為核心的專案已是小事一件。後續的Spring Data JDBC和JPA、Cassandra、MongoDB數據持久化,也只算是回顧Spring Data的總複習。

第二部份「Spring集成」中出現全書第一個亂流,第八章的Spring Security。書中採用的OAuth 2.0實作套件,是尚在測試的不穩定版本,即便直接從GitHub取回範例程式碼執行,依舊會出現令人氣餒的驗證失敗結果。最後求助Baeldung網站裡的教學文章,才在升級OAuth 2.0套件後,跨越第一個難關。其它像是發送異步訊息和Spring集成兩個章節,對於已經採用Apache Camel實作EAI應用的我來說,真的不禁莞爾一笑。這兩種Spring應用,簡直就是對Camel致敬(仿冒)的精簡版。因此雖然看到Spring有Spring集成的功能,未來面對企業資料整合的需求時,還是會採用已熟練且更完整的Camel框架來實作。

重點戲的第三部份「反應式Spring」是全書的精華所在,在Node.js橫空出世的向世界展現反應式Web框架的威力後,Spring也不落人後地推出Java世界裡的反應式Web框架Spring WebFlux。建基於反應式編程專案Project Reactor之上的WebFlux,由於其獨特的開發思維與撰寫風格,難以融入即有的指令式風格框架Spring MVC中。結果就是採用Spring開發Web應用時,有兩種完全平行又異曲同工的解決方案。Spring實戰, 6/e雖然用了兩個章節來介紹WebFlux如何實作出一個具體可用的Web,但反應式編程這個主題實在太新,更別說想要好好講述開發Web的方方面面,Spring Start Here可是用一整本書才講完Spring MVC。想要作者用短短兩個章節講述完整的反應式Web框架和反應式版本的JDBC(R2DBC),實在是強人所難。因此反應式Spring正是我第二個遇到的亂流,只好再度從網路上查閱其它先進分享的技術文章,學習如何使用WebFlux開發出一個完整的反應式Web REST API。只能說在WebFlux這個主題上Spring實戰, 6/e幫我開啟一個好的起頭,但要走的下去,得從其它輔助材料著手才更順利。

最後的「部署Spring」部份,則是介紹一些實務上選用的功能,像是監控與管理用的Spring Boot Actuator,是一個等同MBean的機制。當然Spring也少不了支援傳統的MBean,讓已經採用該工具的開發者不用浪費時間再實作Actuator。Spring專案程式碼的佈署與和Docker/Kubernetes的整合,更展現出Spring實戰, 6/e在主題規劃的全面性,畢竟未來的程式運行環境,有誰能逃得過被容器化哩?附錄介紹了如何使用各項工具建立一個新的Spring Boot專案,是對初學者非常貼心的作法,很多技術書籍都忘了環境建置這一步,往往是讓學習者最挫折進而選擇放棄的起因。對於Java開發者來說Spring實戰, 6/e是不可錯過的著作,不過最好是在讀過Spring Start Here再詳閱,免得略過一些基礎但重要的Spring觀念。

2023年7月4日 星期二

破梯效應

 

「人比人氣死人」,世間很多不快樂都是源自於互相攀比後的心魔。而「破梯效應」一書用科學與統計數字,破解「不平等」對心理、團體與社會層面造成的衝擊。總歸一句,如論語所言「不患寡而患不均」。全球化興起的經濟地位不公平趨勢,終究會埋下社會動亂不安的地雷(看看目前的法國暴動)。導言中作者講述一個有趣的統計結果,數字顯示在設有頭等艙的航班上,乘客行為失控的機率為正常值的四倍!即便是坐得起飛機旅遊稱得上中產階級的知識份子,只要些微感受到處於「被輕視」的情境,就會產生相對地位差異感。讓這群不窮的人,展現出和貧民一般的舉止和態度。像是短視近利、偏好冒險行為。

人們衡量自我地位的認知過程並非基於客觀的數字,許多財務上堪稱富裕的人(年收百萬),在自我評估時總把自己放在較低的位階。相反地有許多客觀上落入貧窮階級的人,卻認為自己過得並不差。原因在於人們用來判斷自己社會地位的標準,是透過不間斷地與他人比較來定義。包括身邊的親朋好友、工作夥伴、送往迎來等等客體的經濟能力,會間接影響你自我地位的評估尺度。「寧為牛後」不失為積極追尋成就的處事策略,然而長期認知自己處於團體中地位低下的階層,容易罹患心理疾病。攀附權貴也許是魚躍龍門最快的捷徑,卻存在著心理健康上的高風險,「富貴險中求」真是至理名言。

如果認為只有擁有高智力的人類才愛比較,那可錯了。針對靈長類的實驗觀察發現,如果同樣的勞力付出會獲得與同伴不同的報酬,也就是刻意營造出來的「不公平」情況,受試動物會產生顯而易見的不開心與反常態度。而針對大鼠所做的研究則發現,大腦在進行「地位比較」時,處於地位優勢者其大腦裡的報償迴路會有放電刺激,效果等同於性愛、金錢或迷幻藥。大腦對「相對地位」的滿足感,竟然可以和獲得真正的金錢一樣強烈(所以只升官不加薪,員工也會從中滿足!),「權力是最好的春藥」獲得科學上的背書。

這些理論也間接解釋為何在今天的台灣,GDP不斷成長,各項建設與福利制度越來越完善,但民眾普遍心存不滿,更有很多長者懷念與嚮往過去過苦日子的「美好時光」(原因是那時是大家一起窮,不易有自己不如人的挫敗感)。經濟層面的幸福感是建立在「相對地位」的比較上,滿意程度不是端看實際所得有多少,而是根據他在群體中的「相對位置」決定(只要比周圍多就會感到開心)。經濟發展漸近高峰的同時,財富逐漸集中在少數人身上,彼此在經濟層面的差距越拉越大,即便原屬於中上收入的小康國民,也會出現財富的「相對剝奪感」,進而開始怨天尤人。社會不平等不僅影響國民的靈性(笑),統計顯示,所得分配越不平等的國家,國民的犯罪與健康問題更惡化,其中最明顯地例子就是美國。財富分配的不公平不只是影響著窮人,而是影響該地居住的所有人口,在同土地上的富人所生活的環境條件(如治安、衛生)會一起被拖累而同步劣化。

「自覺貧窮」對人們造成的傷害是微妙而真實,貧窮感會趨使人從事高風險行為(例如開槓桿投資、冒然創業),以短視近利而非長期經營的思維規劃人生。傷害是如此大,但要讓人產生相對地位不如人的「自覺」卻很簡單,只要透過意在言外的些許暗示就行(例如航班有頭等艙,但你坐經濟艙)。而報章媒體裡的高調炫富、親朋好友的言談比較、街頭路邊的名車重機,卻在已經走火入魔的環境壓力上火上加油,也難怪在台灣,鼓吹「快速至富」的理財老師總能找到冤大頭來割韭菜。

點出問題當然要給予解答,如何善用你我的社會比較天性,讓生活過的更好、更開心,書中也做出總結。在追求自我成長與成就時,要充份運用「向上比較」,說白話就是一句「見賢思齊」,向更優秀的人比較,不要輕於滿足於現狀。而對物質享受與財富地位的態度,則要轉念進行「向下比較」,想想那些三餐不繼貧苦人,時時對平順的日子感恩與滿足。還有兩種比較超然,克服地位比較的思維,一是老生常談的「和自己比」,把比較的目標設定成過去、未來的自己。二是回頭檢視自己最重視的人生價值,並以此為實踐目標,別把心力放在追求身份地位上。「破梯效應」以科學的角度點破市場經濟背後造成的社會壓力與制度隱憂,同時也為尋求人生真正價值的讀者帶來撥雲見日的一道曙光。

2023年6月20日 星期二

「矽谷製造」的漢堡肉?科技食物狂熱的真相與代價

 

近來在連鎖餐廳的菜單上,常可看見植物肉的品項,不禁莞爾想想洋人總算有落後我華人之處。不知十來年前,台灣素食裡已經出現各式素雞、素鴨、素魚,口感風味與外型,雖不中亦不遠矣,而且還很便宜,哪像這些舶來品的植物肉貴森森。不過在讀了「矽谷製造的漢堡肉?」之後,發現植物肉和台灣素肉根本不在同一個維度。食品科學新創正如火如荼地想改變你我飲食的習慣,不論目的是動物福祉、氣候變遷、健康意識或是單純想大發利市。書中談論廣泛的食物科技議題,從內文中讀者能獲取不少食物、營養方面的豆知識。

藻類
一開頭就出現令我訝異的知識,雖然海帶、海菜已經是日常飲食中常出現的食材,而藍綠藻之類的保健食品也能在貨架上瞧見。但想不到的是魚類體內的omega-3脂肪酸居然是來自於海中的藻類,因為大多數的魚類無法代謝掉omega-3才會殘留在體內。為了保健醫生多強調每週至少要吃兩次魚,以攝取足夠的omega-3。然而直接食用特定的藻類則能更高效、經濟地達成此目的。食科新創對藻類的期許是讓它們變成人類的主食!做為蛋白質和脂肪的主要來源,然而目前卡在無法價格和規模上與既有的農牧業競爭。

真菌
相較於其它主題,各種以「菌絲」生成的菇類食材,對於台灣人來說已經是日常飲食不可或缺的成份。只要提供碳水化合物,這單細胞生物變能轉化成人類所需的蛋白質,這種「真菌蛋白」被食科產業認為是未來的明日之星。在許多使用植物蛋白的加工食品中(如能量棒、植物肉),真菌蛋白便是其幕後推手,穩定可靠的產出豌豆和米蛋白混合物。植物肉的成份有豌豆和米蛋白、甲基纖維素、萃取酵母、人工甘味劑、甜菜根粉,本質是超級加工食物。2020年市面上開始出現試驗性的「真菌牛排」(Emergy Foods),有別於其它的「仿肉」技術,以菇類做為代替肉類的想法是最接近原型食物的作法(台灣再度領先世界!吃吃看麻油猴頭菇!)

蜿豆蛋白/豆類
原來現代的加工食品中的蛋白質來源多來自實驗室分離出來的植物蛋白質,主流的植物是蜿豆而非華人熟悉的黃豆(大豆),主因是美國人在傳統上是用黃豆餵食牲畜,在文化、情感層面不能接受。(如同台灣長輩不吃地瓜葉一樣,以前是給豬吃的)市面上各項的素肉製品、植物奶其成份就是來自於這些植物蛋白質,有別於豆腐食材的初級加工,植物肉蛋白可是高度加工而成的工業級食品。在已開發國家,人類飲食中的蛋白質早就過量,沒有人處於蛋白質缺乏的狀態。人們覺得自己需要吃肉補充蛋白質已經是個迷思,推手便是農牧產業的大力推廣。尋找真正健康食物的101法則就是越原型的食物對人類越友善,反之加工程度越高、成份越「純」的食品,喪失越多維生素、維他命等微量元素,加工食品不是代取原型食材的好選擇。就像打果汁會失去纖維一樣,任何形式的加工過程都會流失一些尚未命名但對人體有益的營養素,所以想吃素又得補充蛋白質時,吃三色豆肯定比吃蜿豆蛋白植物肉要來得聰明!(還比較便宜)

牛奶和雞蛋
對於極端的動物保護鬥士來說,人類為了口腹之慾大規模的囚禁、控制各種牲畜,以取得雞蛋與牛奶等蛋白質來源,是人類不夠文明的表現。這也是部份食科新創的終極目標,找到「不需要牛的牛奶」和「不需要雞的雞蛋」。利用微生物發酵製作乳蛋白質已經是成熟的技術,但不論在風味以及成本上,都不足以挑戰蓄牧業成熟、完善的供應鏈和人類長久習慣的消費市場。而生物發酵技術中大量基因改造,也是人造乳業進展令人裹足不前的潛因,畢竟基改食品對人類的長期影響,沒人說的準。全世界每年要吃掉一兆顆的雞蛋,如果能更經濟的「創造」出此食材,那會是多大的商機!這也是生物合成產業挑選雞蛋蛋白做為挑戰項目的理由。採用和人造牛奶相同的技術,提供酵母菌糖和水以產生出類似雞蛋成份的蛋白質。和人造牛奶隱憂一樣,這些工廠製造出來的牛奶和雞蛋,長期食用後真的沒有潛在的風險嗎?(想想棕櫚油)

剩食再造
人類再利用食品加工的「廚餘」的歷史可追溯到十九世紀,從用牛肉脂肪提練出「瑪琪琳」到把釀酒剩餘酒醩餵食日本和牛、乳製品加工後的乳清也是優質的蛋白質來源。有別於基於惜食觀念所興起的剩食餐廳與福利品促銷,食科產業對剩食再造是更進一步地要把食品廢棄物「可食用化」。不論是果皮、果渣又或是釀酒後的麥渣、雞蛋蛋殼,裡面都含有大量對人體有益的營養成份,只是他們的原型無法讓人體消化吸收。把它們加工成各式零食、能量棒,基至是「類麵粉」,都是目前常見的創新食品。將廢料製成食品最大的兩項疑慮是,經過加工後的剩餘物還有多少營養價值?其次,為了更好吃,加工的過程所添加的香料和糖、脂肪對健康的影響有多大?都是將剩食製品做為主食前要三思的事。

植物漢堡
目前市面上最知名的植物漢堡品牌是「不可能食品」,藉由加入植物生產的「血基質」,這些植物漢堡和真肉一樣會「噴血」。因為有和血液類似的成份,所以在烹調時一樣會出現令人胃口大開的「梅納反應」,讓植物漢堡和真肉漢堡在風味上令人無法區別。另一個知名品牌「超越漢堡」則是採用大豆蛋白製造,加上各種修正風味和口感的添加物。就營養學觀點,食品加工的層次可分為四大類:未加工或輕度加工(種子、水果、雞蛋和牛奶等)、加工食品原料(鹽、糖、橄欖油等)、加工食品(麵包、起司、煙燻肉類等)和超級加工食品(汽水、冰淇淋、漢堡、泡麵等)。超加工食物常見的特性包括超級美味,吸引人的包裝,針對未成年人的侵略性行銷手法,跨國企業擁有其品牌所有權,植物漢堡屬於「超加工食物」。

垂直農場
既然天然蔬果才是對人類有益的食物,那不如將科技運用在這個領域吧。基於生菜沙拉在歐美有著廣大市場,食科新創怎會錯過這個看得見的藍海。在高科技大樓中利用LED和人工營養液培育出的「有機生菜」,早已是高端消費族群日常吃食的一部份。強調無毒、無蟲害,品質穩定不受氣候影響的人造蔬食,看來有百利而無一害,目前的慮疑是相對於舊有的農耕法,高科技作物相當耗能(但卻相當省水)。另一個問題是對比吸取土壤養份長大的植物,水耕法的植物確實缺乏某些微量生物與元素,而大量食用這種人造作物長期對人體的影響尚不可知。另外值得一提的是高科技沙拉浪費的塑膠包裝容器數量相當龐大,這是短期可以改善的項目。

人造肉
有別於植物肉的作法,另一種幾乎是科幻電影的食科技術是將高級肉品的細胞用人工細胞分裂的作法,「製造」出一塊肉排。由於細胞複製的成本過高目前都尚未量產出售,不過這種運用到3D生物列印技術的食品新創,算是目前最吸人注目的項目。在定義上雖然成品算是未加工食材,但生成的過程中包含大量的化學成份、培養液,食用這些成份對人體的影響一樣是未知,淺嘗即止或許是目前最保險的作法。

整本書看下來會對美國食科新創的蓬勃發展感到驚奇,原來「民以食為天」的觀念在積極轉化後,有那麼大的發展潛力,足以成就巨大的商機。不過要撐起這些美好的想像,背後都是扎實的生物科技基礎與工業化製程。這也是作者不斷提起,無論是透過投資或併購,西方「巨食」企業或許最後才是這些食科新創未來的「收割者」。而做為消費者的你我,或許最應該獲取的觀念是,不要迷信巨食企業強推給你吃下的「食品」,特別是超級加工後的東西。

2023年6月3日 星期六

Trino: The Definitive Guide

 

崛起於Hadoop生態系的大數據技術,經過不斷地優化、改進終究邁向成熟期。為了讓更多沒有Map/Reduce程式背景的數據分析師與初階工程師親近巨量數據。Hive開了第一槍,它那相容於SQL語法的程式介面,讓使用者「通透」地操作儲放在HDFS中的檔案資料。動態將使用者輸入的SQL指令轉譯成Map/Reduce程式碼並予以執行傳回結果,是實現這神奇魔法背後的咒語。

然而技術演進的巨輪從不停歇,臉書對Hive不適用即時問答的困境(Map/Reduce運算無法達到秒級回應),再開發出Presto(開源後改名為Trino)來改善。得利於高速網路的普及,Trino的架構擺脫Hadoop平台儲存/運算同一體的思維,實踐目前雲端主流的儲存與計算分離設計。Trino會讀取Hive的Schema元數據(Metadata)來進行SQL語法解析,跳過Hive引擎直接向HDFS索取檔案資料,並進行後續的SQL計算產生結果傳回給使用者。純記憶體設計加上平行可擴充的分散式節點,讓Trino成為類似GCP的BigQuery般強大。因為是開源解決方案,而沒有BigQuery依算量計價的費用疑慮。

在應用情境上,除了做為Hive的運算加速器外,受惠於Trino Connector Plugins的模組化設計,它的資料來源不受限於Hive,不論是傳統的RDBMS(PostgreSQL、MySQL)或是noSQL的Redis、ElasticSearch,甚至是雲端平台的檔案系統(AWS S3),在原生的Connector協助下,簡單地調整設定檔內容,魔法棒一閃,全部都可以變成能讓使用者執行SQL指令的資料來源。更令人驚喜地是,這些不同類型的資料源在過程中只扮演提供資料的角色,關聯計算(join)、條件過瀘(where)和彙總計算(group by)都是在Trino上執行,所以跨資料源的關聯計算也就變得理所當然,像美夢成真般,不需要事先建立ETL和資料倉儲,使用者也可以自由連結不同實體來源的資料,來進行深度而複雜的數據探索。

noSQL概念問世後的十幾年,SQL語法不僅沒被消滅,反之由於其易入門且廣泛使用的優勢下,讓更多noSQL得配合SQL提供相容性解法。Trino便是在這大環境下所創作出來的終極解決方案,主打著「SQL on Anywhere」的口號。隨著SQL在數據分析領域的影響力日增,以及Trino這類大數據開源解決方案的成熟與普及,可以想見未來的IT新秀將對Map/Reducer這種非結構化資料處理模型更加陌生,或是以管窺天地認為數據工程/數據分析就是寫出很複雜的SQL。而像Trino這麼強大又開源的產品,將會使得商用的資料倉儲系統相形失色,在市場競爭中逐漸為人淘汱。「Trino: The Definitive Guide」一書,提供讀者最完整可靠的知識,讓所有想導入如同BigQuery一般神奇工具的IT人,有一本快速入門的武功祕籍。

2023年5月25日 星期四

快速上手 Scala:Spark 大數據分析入門

 

在Hadoop撐起大數據生態系的半邊天後,後起之秀Spark針對Map/Reduce的效能瓶頸(必須落地的暫存檔)予以重構,採用純記憶體的計算模型將大數據運算提升到新高度。自此Spark變成了大數據工程師不得不鑽研的顯學,更是莘莘學子學習大數據平台的起點。然而Spark平台並不像Haoop一樣以Java語言為主,它主要著重在Scala和Python,不過要真正發揮Spark的運算能力,還是非得使用Scala這個Spark用的基底語言。

和物件導向的Java截然不同,Scala是函數式導向的程式語言。最大的特色就是「函數是一等公民」,更具體而言,函數本身可以當做變數來自由傳遞,進而實現另一種和物件導向語言完全不同的「封裝」方法。依Scala的函數式設計實做出的map、reduce、foreach功能,都被Spark充分運用成為RDD分散式資料集的核心功能,因此想靈活地開發Spark計算程式,必然得對Scala的基礎下一番功夫。更別說Scala在許多方面,都擁有著獨特而不好類比的語言特性,像是不可變性的變數、Unit和Any類型、代碼堆、Case類等等。有太多太多對Java開發人員而言,丈二金剛摸不著頭腦的術語與觀念。而這些Scala的基本功,都濃縮在這本「快速上手 Scala:Spark 大數據分析入門」書中。

最後值得一提就是,既便你辛辛苦苦地學會並撰寫出一個可以運作的大數據Spark(Scala)程式,最後的魔王關卡才會出現。Scala語言的編譯工具是SBT,設計思維等同Java開發人員熟悉的Maven和Gradle。但畢竟是完全不同的工具,想要簡單地編譯出一個能上線佈署的執行JAR檔,中間試誤(trial and error)的挫折感,一不小心就會讓你想躺平放棄(用PySpark算了!)。別灰心,這本書中在最後一個章節,大方地分享如何迎刃而解地編譯出一個JAR執行檔,開啟你走上Spark大數據工程師的道路。在研讀其它Spark專書之前,如果能先看過這本「快速上手 Scala:Spark 大數據分析入門」,真的可以少花虛功,建立長久受用的基礎知識。

2023年5月20日 星期六

做工的人

 

「有時看的不是一本書,而是一群人的半輩子」。最來常看人文社會類的書,借此瞭解百業百工的人情世況。林立青的「做工的人」大紅大紫,甚至被改編成HBO播映的台製影集,劇本原形是書中一篇較戲劇化的文章「走水路」。多數文章半敘半議,主題圍繞著介紹與描述從事營造工程的基層勞工。如同林立青所言,人事物皆取材自他生活周遭,也讓書中的人物和表達出來的情緒,那麼地真實而讓讀者不捨。

房價年年屢破新高,加上媒體標題黨的操作,「營建(泥水、木作)師傅日薪幾千,找不到工!」,讓社會大眾對這群做工的人產生錯誤的刻板印象。營建相關職務,即便看似高薪,卻脫離不了髒汙、高強度、危險的工作環境,加上有做才有錢的日領計酬,絕對不是在辨公室吹著空調打電腦的白領階級想像般薪資優渥「有為者矣若是」。

由於社會階級的僵固性,從事這類底層工作的勞工多半原生家庭狀況中下,導致教育程度不高,傾向和在地宮廟與地下經濟「交陪」,對警察、執法者有著「一朝被蛇咬」的厭惡。除了眾多「做工的人」的人生百樣外,林立青在書中提到像外籍新娘、檳榔西施、茶室姐姐等社會眼皮底下的女性角色,還有介紹工地調酒、外勞、罰單等工地文化。這本書像是一扇為社會白領開啟的窗,用一種不危險的距離觀察、認識這些非同溫層的辛勤勞動者。藍領與白領也許像油與水般性不相溶,但對每個認真生活對社會做出貢獻的人來說,都值得獲得平等的自由和尊重,簡單一句「職業無貴賤」。