Scala

【Scala】Scala ~ 非同期 / Future ~

■ はじめに GW休み明けに、Scalaで、非同期のコードを書きそうなので予習。 目次 【1】Scala での非同期 1)Future 2)scala-async 【2】サンプル 例1:実験コード 例2:実験コード(非同期部分のメソッド化) 【1】Scala での非同期 1)Future << ★…

【Scala】Scala ~ Apache Kafka / Consumer ~

■ はじめに https://dk521123.hatenablog.com/entry/2023/04/27/235703 の続き。 前回は、Apache Kafkaへの送信部分(Producer)を実装したので 今回は、Apache Kafkaへの受信部分(Consumer)を Scala で実装してみる 目次 【1】サンプル 補足: build.sbt…

【Scala】Scala ~ Apache Kafka / Producer ~

■ はじめに https://dk521123.hatenablog.com/entry/2023/04/23/235534 https://dk521123.hatenablog.com/entry/2023/04/24/153846 https://dk521123.hatenablog.com/entry/2023/04/26/103421 で、Apache Kafkaについて、取り上げた。 今回は、Apache Kafka…

【Spark】Spark ~ FutureAction ~

■ はじめに Spark の FutureAction について、業務上でてきたので、 調べてみた。あんまり情報がないので、随時更新していく、、、 目次 【1】FutureAction に関する記述 【2】サンプル 【1】FutureAction に関する記述 http://mogile.web.fc2.com/spark/…

【Scala】Scala ~ AWS SDK / SESサンプル ~

■ はじめに https://dk521123.hatenablog.com/entry/2023/03/24/211033 https://dk521123.hatenablog.com/entry/2023/04/01/002005 https://dk521123.hatenablog.com/entry/2023/04/03/012600 の続き。 今回は、Scala で、AWS SDK for Java を使った Amazon …

【Scala】Scala ~ ファイルの読み書き ~

■ はじめに 今更だが、Scalaのファイル入出力。 目次 【1】読み込み 例1:一行づつ表示 【2】書き込み 例1:テンプレートファイルを読み込み置換したものをファイル出力 【1】読み込み 例1:一行づつ表示 import scala.io.Source object Hello { def m…

【トラブル】【Scala】SBTでのエラー/警告対応

■ はじめに https://dk521123.hatenablog.com/entry/2023/01/25/000000 で「sbt-assembly」を使って、JARファイルの作成をした際に エラーが出たので、対処方法を記載する また、その過程で警告とかの対応方法も分かったのでメモ。 目次 【1】sbt-assembly…

【Scala】Scala ~ JSON ~

■ はじめに https://dk521123.hatenablog.com/entry/2023/03/16/012034 で、ScalaでYAMLファイルを扱ったが、 今回は、JSONについて、調べた。 目次 【0】Scala で JSON 補足:scala.util.parsing.json.JSON 【1】Gson 1)インストール 2)サンプル 【2…

【Scala】Scala ~ AWS SDK / Secrets Managerサンプル ~

https://dk521123.hatenablog.com/entry/2023/03/24/211033 https://dk521123.hatenablog.com/entry/2023/04/01/002005 の続き。 今回は、Scalaで、AWS SDK for Java を使ったSecrets Managerのサンプル集 目次 【0】build.sbt 【1】Secrets Managerをハン…

【Scala】Scala ~ AWS SDK / S3サンプル ~

■ はじめに https://dk521123.hatenablog.com/entry/2023/03/24/211033 の続き。 今回は、Scalaで、AWS SDK for Java を使ったS3のサンプル集 目次 【0】公式のサンプル 【1】build.sbt 【2】S3をハンドリングする共通処理 【0】公式のサンプル https://…

【Scala】ScalaTest ~ with Mockito ~

■ はじめに https://dk521123.hatenablog.com/entry/2023/03/27/001306 https://dk521123.hatenablog.com/entry/2023/03/28/003906 https://dk521123.hatenablog.com/entry/2023/03/29/000014 の続き。 Scala の単体試験で、ScalaTest をベースにやってきた…

【Scala】ScalaTest ~ with ScalaCheck ~

■ はじめに https://dk521123.hatenablog.com/entry/2023/03/27/001306 https://dk521123.hatenablog.com/entry/2023/03/28/003906 の続き。 今回は、ScalaTest + ScalaCheck (org.scalatestplus) を使って プロパティベーステスト (Property Based Testing;…

【Scala】ScalaTest ~ 基本編 ~

■ はじめに https://dk521123.hatenablog.com/entry/2023/03/27/001306 の続き。 今回は、Scalaの単体試験する際に ScalaTest を使用した時のTipsについてまとめる 目次 【1】初期処理・後処理 1)BeforeAndAfter 2)BeforeAndAfterAll 【2】一時的テス…

【Scala】ScalaTest ~ 入門編 ~

■ はじめに ここ最近、狂ったように、プログラムや調べものをしてきたが とりあえず、最低限やれることが調べたので、後はブラッシュアップさせていきたい、、、 っと思ったのだが、単体試験のことを忘れていたので、調べてみた。 目次 【0】Scalaのテスト…

【Scala】Scala ~ JDBC / DB接続 ~

■ はじめに SparkからSnowflakeへの接続について考える https://dk521123.hatenablog.com/entry/2023/03/19/013833 で、JDBCでもSnowflakeにアクセスすることに触れたが 今回は、ScalaでJDBCドライバからDBにアクセスすることについて触れる 目次 【1】JDBC…

【Docker】Docker compose ~ LocalStack/Glue4.0 ~

■ はじめに Spark/Scalaの開発環境構築 ~ Windows編 ~ https://dk521123.hatenablog.com/entry/2023/03/20/115450 で、『本当は、Dockerで一発でばーんって作りたい、、、』って 言ったのだが、それを実践してみた 以前やった https://dk521123.hatenablog…

【Scala】Scala ~ AWS SDK ~

■ はじめに AWS Glue で Scala を使うことになって悪戦苦闘中なのだが Scalaの実装のしにくさとして、 Pythonのように便利な boto3 がある訳ではないので調べてみた。 とりあえず、以下のサービスを利用したい。 ~~~~~ + S3 + Secrets Manager + SES ~~~~~ …

【Scala】SBT ~ 入門編 ~

■ はじめに Scala を初めて、SBTについて今まで何となくやっていたが ちゃんと勉強しないとまずいと感じたので、メモ。 目次 【0】環境設定 【1】ビルドツール「sbt」 1)主な機能 2)sbt の処理の流れ 【2】フォルダ構成 1)build.sbt 2)build.prop…

【Scala】Scala ~ 基本編 / ジェネリック <T> ~

■ はじめに https://dk521123.hatenablog.com/entry/2023/03/16/012034 で YAMLファイルを扱った。ここで作成した 「例2:独自クラスにマッピングする」「例3:別YAML&リファクタリング」 を、どのクラスでも使えるようにしたい。 そこで、その第一歩とし…

【Scala】Spark/Scalaの開発環境構築 ~ Windows編 ~

■ はじめに https://dk521123.hatenablog.com/entry/2019/09/18/214814 で、Windows で Spark の実行環境を構築した。 で、最近、AWS Glue4.0になり、Sparkのバージョンもv3.3.0になり かつ、今の仕事で、Scalaを使うことになった。 そこで、今回は、「Windo…

【Scala】Scala ~ 基本編 / 正規表現 ~

■ はじめに Scala が慣れない、、、 今回は、Scala の 正規表現 (regular expression) について扱う。 正直、めちゃくちゃ、いまいち、、、 Javaの正規表現メソッド使った方がいいかも、、、 目次 【0】正規表現オブジェクト 1)メソッド 【1】抽出 【2…

【AWS】AWS Glue ~ Scalaでの実装 ~

■ はじめに AWS Glue は、3年以上使っていて、その際は、PythonでGlue jobを記述していた。 今、行っている仕事で、Scalaを使ってPoC(Proof of Concept:概念実証) をすることになったので、調べてみた。 別件:Glue4.0 ってゆーかーいつの間にGlue4.0がリ…

【Scala】Scala ~ YAML ~

■ はじめに Scala で YAMLファイルを扱う方法を扱う 目次 【1】YAML用ライブラリ「org.yaml.snakeyaml.Yaml」 1)設定 2)API仕様 【2】サンプル 例1:Hello World 例2:独自クラスにマッピングする 例3:別YAML&リファクタリング 【1】YAML用ライ…

【Scala】Scala ~ 基本編 / クラス ~

■ はじめに https://dk521123.hatenablog.com/entry/2023/03/10/193805 https://dk521123.hatenablog.com/entry/2023/03/12/184331 の続き。 今回は、クラス周辺について扱う。 試す環境 https://scastie.scala-lang.org/CEpZy3v4Taa0MCStp3LCYg 目次 【1】…

【Scala】Scala ~ 基本編 / コレクション ~

■ はじめに https://dk521123.hatenablog.com/entry/2023/03/10/193805 https://dk521123.hatenablog.com/entry/2023/03/12/184331 の続き。 今回は、配列やコレクションについて扱う。 試す環境 https://scastie.scala-lang.org/CEpZy3v4Taa0MCStp3LCYg 目…

【Scala】Scala ~ 入門編 ~

■ はじめに https://dk521123.hatenablog.com/entry/2023/03/10/193805 の続き。 Scalaで開発することになりそうなので 予習してたら、Javaと比べて、結構、変わっていた。 まずは、簡単な文法から整理していく なお、以下のサイトで動作確認しながらやると…

【Scala】Scala ~ ファイル名・パスの扱い ~

■ はじめに Scala の ファイル名・パスの扱いについて書き溜めていく 【1】ファイル名取得 import java.io._ val targetPath = "s3://your-bucket/hello/world/test.csv" val targetFile = new File(targetPath) val fileName = targetFile.getName() // Fi…

【Scala】Scala ~ 環境構築編 ~

■ はじめに https://dk521123.hatenablog.com/entry/2023/03/01/235100 https://dk521123.hatenablog.com/entry/2023/03/05/235755 で、Apache Flink について、触れたが、 Scalaで書かれていることを触れた。 もし、採用された場合、Scalaで開発することに…

【Scala】Scala ~ 基本編 / Option型 ~

■ はじめに 開発中だが、バグったので整理。 目次 【1】Option型 1)Some 2)None 【2】NULLおよび混同しそうなキーワード 1)null 2)None 3)Nothing 4)Nil 【1】Option型 * 値があるかないかを表す型 * 2種類のサブクラスを持っている 1)Some…

【Scala】Scala ~ 基本編 / 日付・日時 ~

■ はじめに 今回は、Scala の 日付/日時の扱いについて触れる。 徐々に書き溜めていく、、、 目次 【1】日付/日時フォーマット 【1】日付/日時フォーマット import java.util.Date val date1 = "%tY%