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. Databricks

    Databricks: Spark DataFramesをJDBCから作成する

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

  2. Google BigQuery

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

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

  3. Adobe Analytics

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

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

  4. Databricks

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

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

  5. Adobe Analytics

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

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

  6. Adobe Analytics

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

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

最近の記事

  1. LangChainのソースコードから実装を見てみる(Chat…
  2. Tableau×Teams連携
  3. AIを使ったマーケティングゲームを作ってみた
  4. Snowflakeや最新データ基盤が広義のマーケティングにも…
  5. 回帰分析はかく語りき Part3 ロジスティック回帰
  1. ブログ

    ページ作成ツール"Marketo"を使ってみて。
  2. IT用語集

    アベイラビリティ(Availability)って何?
  3. Adobe Analytics

    Adobe AnalyticsからDWHレポートをGoogle Cloud St…
  4. ブログ

    データ視覚化ツール「Power BI」
  5. Google Analytics

    Google Analytics 4 + BigQueryでよく使う基本的なSQ…
PAGE TOP