Databricks

Databricksを始める前に覚えておきたいScalaプログラミングの基本

こんにちは、エクスチュアの権泳東(コン・ヨンドン)です。
最近ツイッター始めました。

それはさておき、今回はDatabricksで使われているScalaというプログラミング言語について説明します。

Scalaとは、Sparkで使われているオブジェクト指向の関数型言語です。
DatabricksはフルマネージドのSparkコラボレーション環境なので、そのベーステクノロジーとなるScala言語を覚えるとDatabricksも使いこなせるようになれます。
 
というわけでScalaを覚えましょう!
Databricksで空白のノートブックを開いてから下記のコードを実際に入力してから結果を試して行きます。

プログラミングといえばまずは変数の宣言から。

不変なval

変数宣言の前にvalを付けることで、不変な変数を定義出来ます。

val hello: String = "こんにちは"
println(hello)

この例では、不変な変数「hello」をString型で宣言して、そしてprintlnで表示させる例です。
実行すると、「こんにちは」と表示されます。

valは不変

valで宣言した変数にあとから値を入れ直そうとすると、エラーになります。

error: reassignment to val

可変なvar

varをつけると、再代入可能な可変な変数になります。

var helloWorld: String = "Hello World!"
helloWorld = hello + "世界"
println(helloWorld)

この例では、可変な変数「helloWorld」をString型で宣言してます。
初期値は「Hello World!」ですが、そのあとにhello + 「世界!」という値で上書きしたので
結果は、「こんにちは世界!」になります。

varは可変

if-else

条件分岐のifとelseの書き方。

val chk1: Int = 3
val chk2: Int = 5
if (chk1 > chk2) {
  println("それはない。")
} else {
  println("そのとおり!")
}

これは説明不要ですね。
chk1とchk2というInt型の変数の大きさを比較して、結果を表示する例です。

if-elseで分岐

forループ

繰り返し処理のforの書き方。

for (i <- 1 to 5) {
  println(i)
}

1から5まで表示をループさせる例です。
普段Javascriptをよく書いてるので、Scalaのこの書き方はスッキリしてます。

for文でループ

関数

関数はdefで宣言します。
引数の型と戻り値の方も定義します。

def calc(i: Int, j: Int) : Int = {
  i + j
}
val res = calc(2, 5)
println(res)

2つの整数を引数で受け取って、足した結果を整数で返す関数の例です。
Javascriptみたいにreturnしなくても良い。

defで関数を宣言

Tuple

タプルは異なる型の変数を持てる配列です。
Scalaでもよく使われます。

val myTuple = ("hoge", 123, "fuga")
println(myTuple._1)
println(myTuple._2)
println(myTuple._3)

_1, _2, ..というインデックス番号を使ってタプルの中身にアクセス出来ます。

異なる型を持てる配列:タプル

List

一方、リストは同じ型の変数のコレクションです。

val myList = List("foo", "bar", "baz")
println(myList(0))
println(myList(1))
println(myList(2))

0から始まるインデックス番号でリストの中身にアクセス出来ます。

Listは可変な配列

タプルにはない機能があるのもリストの特徴です。
配列の中身をループで展開するならこういう書き方が出来ます。

for (item <- myList) {
  println(item)
}

これもスッキリしてますね。

配列のループ

リストに組み込まれてる変数がいくつかあります。
例えばreduceで、配列の中身を順番に演算してくれます。

val numList = List(1, 2, 3)
val total = numList.reduce( (x: Int, y: Int) => x + y)
println(total)

これで1+2+3の結果6になります。

reduceで配列内を演算

Map

Mapはkey-value型の値の配列です。

val myMap = Map("name" -> "Exture", "tel" -> "0344445555", "city" -> "Tokyo")
println(myMap("name"))

Map内の「name」というキーに一致する値を表示する例です。

Mapはkey-value型の配列

まとめ

 
Scala言語はDatabricksでSparkを扱うために覚えておくべきプログラミング言語です。
勉強するための環境はDatabricksのノートブックだけではなく、ローカルPCにJava8, Spark, Scalaをインストールすればすぐに構築出来るので、ぜひScalaを始めましょう。

弊社はデジタルマーケティングからビッグデータ分析まで幅広くこなすデータ分析のプロ集団です。
お問合わせはこちらからどうぞ。

ブログへの記事リクエストはこちらまでどうぞ。

関連記事

  1. Adobe Analytics

    AdobeAnalytics: GTMのdataLayerをAdobeAnalyticsの処理ルール…

    こんにちは、エクスチュアCTOの権です。今回はGoogle T…

  2. Google BigQuery

    GCP: 今月のGCP課金額をslackに自動的に書き込む

    こんにちは、エクスチュアCTOの権です。今回はGCPの課金額を…

  3. Adobe Analytics

    Adobe AnaltyicsとGoogle Analytics の「生Webビーコン」をBigQu…

    こんにちは、エクスチュアの権泳東(コン・ヨンドン)です。今回は…

  4. Firebase Analytics

    Firebase AnalyticsのデータをフラットなCSVに変換するETL処理

    こんにちは、エクスチュアCTOの権です。今日はFirebase A…

  5. Adobe Analytics

    AA + GA : SafariのITP2.1に備えてphpでクッキーを永続化する

    こんにちは、エクスチュアの権泳東(コン・ヨンドン)です。Saf…

  6. Amazon Web Services

    Databricks Community Editionを使ってApache Sparkを無料で学ぶ…

    こんにちは、エクスチュアの権泳東(コン・ヨンドン)です。今回は、無…

最近の記事

  1. ObservePoint TagDebuggerでページに…
  2. Databricks Community Editionを使…
  3. ObservePoint:タグ管理の救世主!サイト監査ツール…
  4. Zapier(ザピエル)経由でSansanで取り込んだ名刺を…
  5. Databricksを始める前に覚えておきたいScalaプロ…
  1. Adobe Analytics

    AdobeAnalyticsでReactNativeアプリを計測する
  2. Google BigQuery

    Google Apps Scriptを使ってスプレッドシートからBigQuery…
  3. Tableau

    Tableau:分かりやすいLOD – EXCLUDE編
  4. Tableau

    Tableau : IF文の「集計」「非集計」の混在を解決
  5. GA 360 Suite

    BigQuery: Google Analytics 360のネストされたデータ…
PAGE TOP