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. 最速で理解したい人のためのIT用語集

関連記事

  1. Adobe Analytics

    Adobe Analyticsに入り切らないデータをBigQueryに投入する

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

  2. Adobe Analytics

    Adobe Analytics: SegmentsAPIを使って大量のセグメント設定を作成・更新する…

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

  3. Adobe Analytics

    AdobeAnalytics: スクロールで目標に到達したらカスタムリンク

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

  4. Amazon Web Services

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

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

  5. Google BigQuery

    Google Apps Scriptを使ってスプレッドシートからBigQueryのテーブルを更新する…

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

  6. ChatGPT

    ChatGPTとVSCodeの連携方法とその使用例:開発効率を飛躍的にアップさせる

    こんにちは、石原と申します。今回のブログが初投稿となります。…

最近の記事

  1. 【GA4/GTM】dataLayerを使ってカスタムイベント…
  2. KARTE を使ってサイト外でも接客を
  3. 【GA4/GTM】dataLayerを活用しよう
  4. ジャーニーマップをデジタルマーケティングの視点で
  5. ChatGPT ProからClaude3 Proへ移行した話…
  1. Tableau

    TableauでTreasure Data上のデータへ接続する方法(2019/1…
  2. ヒートマップ

    スクロール・ヒートマップ
  3. Python

    Python クローリング&スクレイピング
  4. 海外カンファレンス

    Adobe Summit 2018 レポート(1):AIとヒトで最高の経験を!
  5. ObservePoint

    ObservePoint:タグ管理の救世主!サイト監査ツールのご紹介
PAGE TOP