顯示具有 Scala 標籤的文章。 顯示所有文章
顯示具有 Scala 標籤的文章。 顯示所有文章

2014年12月21日 星期日

[Scala][教學] 神奇的Currying

        話先說在前頭,本篇文章跟NBA的Curry完全一點關係都沒有,標準圖文不符.最近在Coursera上按表操課上著scala的課程,每一堂十分鐘的課程真的從頭到尾要弄懂每個語法細節大概都要花上一個多小時,跟當初看著codecademy自學python順順走的經驗差超多Orz.所以做的分享也只能是很簡單的到處搜集資料的結果,離應用還差上超大一截.

2014年11月18日 星期二

[Apache Spark][教學] 不要隨便Collect RDD!


        先講結論:如果你的RDD很大,千萬不要隨便Collect.原文出處為http://databricks.gitbooks.io/databricks-spark-knowledge-base/content/best_practices/dont_call_collect_on_a_very_large_rdd.html.只說Collect會將所有元素複製到單一台機器上,但是沒說清楚為什麼會發生這種現象.

[Apache Spark][基本架構] 關於RDD中的不可變性(immutable)


        剛開始接觸RDD時,會覺得RDD是一個裝資料的貨櫃(Container).再多瞭解一點後,才發現RDD更像裝洋片的太空包對不起我肚子餓了).貨櫃和太空包的差異在於:貨櫃可以裝不同的東西,把東西拿出來再擺回去,但是當洋芋片裝到太空包後,如果要吃或分裝,就得把太空包拆開.

[Scala][Spark] 型態抹除(it is eliminated by erasure)

        之前python玩習慣了,在定義function的輸入變項時,不用特別去注意輸入變項是什麼型態,反正不管什麼型態的變項丟進來,python都會去執行程式,直到出現錯誤才會跳出.但是在scala這樣強型態的語言中,程式會在編譯階段就先定義輸入與輸出變項的型態,如果出現型態錯誤就無法繼續編譯.這樣的差異讓我在設計第一個總和的function就撞牆了.

2014年11月15日 星期六

[Scala][教學] Call by Name or Call By Value?

        今天再看scala的教學課程看到的小觀念,記錄下來怕以後搞混。Scala再讀入參數的時候有兩種方式,預設是call by value,但是也可以改成call by name。兩者的差異在於:

Call by Value(default,透過x: Int的方式設定):呼叫函數的時候一併將值讀入。
Call by Name(透過x: => Int的方式設定):當函式碰到值的時候才去取值。

2014年11月9日 星期日

[Apache Spark][教學] 應用IDEA以及Scala於Spark程式開發(圖多)


        俗話說,工欲善其事,必先利其器,對於程式開發者來說,有個好的IDE介面絕對能大幅增加開發速度以及減少不必要的錯誤.先前在玩Spark的時候([Spark] 建立第一個RDD物件,體驗in Memory Computing的威力)是使用python,自然就是以Ipython notebook為首選,可以很方便的測試和操作RDD物件.但是因為Spark的原生語言其實是Scala,python在一些功能的支援上目前還趕不上Scala,所以目前選擇Scala作為開發Spark的主要工具.