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. Firebase Analytics

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

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

  3. Databricks

    Databricks: Spark DataFrameでユーザー定義関数を使う

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

  4. Adobe Analytics

    Adobe AEP SDKをTypeScriptで開発したReactNativeアプリに実装する

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

  5. Google BigQuery

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

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

  6. Adobe Analytics

    Adobe Mobile SDK 4.xからAEP SDKに移行する

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

最近の記事

  1. 回帰分析はかく語りき Part3 ロジスティック回帰
  2. GCSへのSnowflake Open Catalogによる…
  3. VPC Service Controlsで「NO_MATCH…
  4. モダンデータスタックなワークフローオーケストレーションツール…
  5. Streamlit in Snowflakeによるダッシュボ…
  1. IT用語集

    キッティング(Kitting)って何?
  2. IT用語集

    オンデマンド(On Demand)って何?
  3. Google Cloud Platform

    Vertex AI Embeddings for Text によるテキストエンベ…
  4. Python

    pythonを使ったダミーデータ生成
  5. Linux

    Linux技術者資格のLPIC-3試験に合格しました
PAGE TOP