Spark / PySpark

【Spark】Spark ~ FutureAction ~

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

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

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

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

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

【Snowflake】SparkからSnowflakeへの接続について考える

■ はじめに AWS Glue(Spark) から Snowflake へ接続する必要がでてきたので 方法について、調べてみた 目次 【0】単純にSQLを実行する 【1】Sparkコネクタ 【2】全体構成 【3】転送モード 1)内部転送 2)外部転送 【4】Snowflakeコネクタの設定 1…

【分散処理】PySpark ~ _corrupt_record ~

■ はじめに https://dk521123.hatenablog.com/entry/2021/06/01/142457 の続き。 PySpark で 「columnNameOfCorruptRecord」とか「_corrupt_record」など でてきたので、調べてみた。 目次 【1】Corrupt Record 1)何ができる? 2)使用用途 【2】使用方…

【分散処理】PySpark ~ CSV / MultiLine対応 ~

■ はじめに https://dk521123.hatenablog.com/entry/2019/11/24/225534 https://dk521123.hatenablog.com/entry/2020/07/30/195226 の続き。 今回は、PySparkにおいて、 CSVなどで改行が入った時の複数行(MultiLine)の対応について 触れたので、メモしてお…

【分散処理】PySpark ~ パーティション単位で上書きするには ~

■ はじめに https://dk521123.hatenablog.com/entry/2021/07/06/120134 で、パーティション付のテーブルにアクセスした際に 実ファイルがなくなっていた現象が発生していた。 この現象のそもそも原因が、ファイルを書きだすときの モード mode = overwrite …

【分散処理】PySpark ~ CSV / Null・空文字・異常値の扱い ~

■ はじめに https://dk521123.hatenablog.com/entry/2021/04/29/075903 の続き。 今回は、Null および 空文字 について、扱う。 調べてみると、読み込み時において、 それ以外の異常値(e.g. non-number)についても 指定できるらしいので、それらについても…

【分散処理】PySpark ~ UDFの各定義方法でのサンプル ~

■ はじめに https://dk521123.hatenablog.com/entry/2020/05/20/195621 で、PySpark の UDF (User Defined Function) 定義方法 について、扱ったが Udacity(ユダシティ)の Freeコース「Spark」で 別の方法を取り扱っていた。 https://www.udacity.com/cour…

【分散処理】PySpark ~ DataFrame / データ集計編 ~

■ はじめに https://dk521123.hatenablog.com/entry/2020/01/04/150942 の続き。 今回は、テーブルデータの集計に関して扱う。 目次 【0】agg (集計) 【1】min/max (最小/最大) 【2】count (カウント) 【3】countDistinct (重複カウント) 他にも、sum (…

【分散処理】PySpark ~ DB・テーブル・項目取得編 ~

■ はじめに https://dk521123.hatenablog.com/entry/2020/01/04/150942 https://dk521123.hatenablog.com/entry/2020/05/18/154829 https://dk521123.hatenablog.com/entry/2020/08/28/183706 の続き。 今回は、テーブルデータを集計するにあたり、 テーブル…

【分散処理】PySpark ~ 出力ファイル / 空ファイル対応, 1ファイルに纏める ~

■ はじめに PySpark でファイルを出力した際に、 サイズが0Byteの空ファイルが出力されたので 対応について調べてみた。 ついでに、ファイルを1つにまとめることも載せておく。 目次 【1】対応方法 【2】出力ファイルが空ファイルになる 1)出力される原…

【分散処理】PySpark ~ UDF の使用上の注意 ~

■ はじめに https://dk521123.hatenablog.com/entry/2020/05/20/195621 の続き。 PySpark の UDF (User Defined Function) で ミスった点や注意点などをあげておく。 目次 【1】メモリ消費について 【2】デコレータによる実装方法に関する注意点 【3】引…

【分散処理】PySpark ~ RDD <=> DataFrame の相互変換 ~

■ はじめに https://dk521123.hatenablog.com/entry/2021/04/06/001709 より分冊および追記。 RDD <=> DataFrame の相互変換について扱う。 目次 【1】RDD => DataFrame 1)createDataFrame() 2)spark.read.csv() 補足:TSVなど区切り文字を変更して変更…

【トラブル】AWS Glue上で saveAsTextFile() を使ったら エラー「DirectOutputCommitter not found」が発生する

■ はじめに AWS Glue 上で RDD.saveAsTextFile() を使ったら エラー「DirectOutputCommitter not found」が発生したので その際のトラブルシュートをメモする。 目次 【1】エラー内容 【2】発生したコード(一部) 【3】解決案 案1:DirectFileOutputCom…

【トラブル】AWS Glue上で エラー「Dynamic partition strict mode requires ...」が発生する

■ はじめに https://dk521123.hatenablog.com/entry/2021/05/15/130604 を調査している際に、以下「参考サイト」で 『GlueのSparkバージョンが2.3.0になれば』って記載されていた。 で、以下のAWS Glue の公式サイト https://docs.aws.amazon.com/ja_jp/glue…

【分散処理】PySpark ~ パーティション ~

■ はじめに PySpark に関して、 パーティション (Partition) 付きでファイル出力があったので そのことを含めて、パーティションにまつわるTipsをまとめておく cf. Partition = 仕切り壁、分割、分配 目次 【1】パーティションの基本操作 1)現在のパーテ…

【分散処理】PySpark で 出力ファイル名を変更する

■ はじめに PySpark で ファイルを出力した場合 出力先パスは指定できるが、ファイル名は勝手に決められる。 このファイル名を変更するやり方を調べてみた。 目次 【1】PySpark での リネーム方法 【2】サンプル 【3】補足1:拡張子 CRCファイル につい…

【分散処理】PySpark ~ CSV / White Spaceの扱い ~

■ はじめに https://dk521123.hatenablog.com/entry/2019/11/24/225534 https://dk521123.hatenablog.com/entry/2020/07/09/000832 https://dk521123.hatenablog.com/entry/2020/11/23/224349 https://dk521123.hatenablog.com/entry/2020/07/30/195226 の続…

【分散処理】PySpark ~ DataFrame / show() ~

■ はじめに https://dk521123.hatenablog.com/entry/2020/01/04/150942 https://dk521123.hatenablog.com/entry/2020/05/18/154829 https://dk521123.hatenablog.com/entry/2020/07/02/000000 の続き。 調査する際に PySpark の DataFrame の show()などを使…

【トラブル】PySpark でエラー「Total size ... is bigger than spark.driver.maxResultSize」が発生する

■ はじめに 大きいファイルサイズのデータを扱った際に エラー「Total size ... is bigger than spark.driver.maxResultSize」 が発生したので、調べてみた。 => 凄く勉強になった、、、 なお、余談だが 大きいテキストファイルを扱った際の調査に、以下のコ…

【PySpark】PySparkで入力ファイル名を取得するには

■ はじめに https://dk521123.hatenablog.com/entry/2020/11/16/162114 の PySpark版。 小ネタだが、ファイル名のみを取得する場合(以下の 「【2】入力ファイルのみを取得するには」の「方法1:UDFで行う」)、 前に扱った UDF (User Defined Function)の…

【分散処理】PySpark ~ Parquet / 基本編 ~

■ はじめに PySpark で、Parquet フォーマットで 保存する必要ができたので調べてみた Parquet ファイルに関しては、以下の関連記事を参照のこと。 Parquet ファイル https://dk521123.hatenablog.com/entry/2020/06/03/000000 目次 【1】サポートされてい…

【分散処理】PySpark ~ RDD / あれこれ編 ~

■ はじめに https://dk521123.hatenablog.com/entry/2019/11/14/221126 https://dk521123.hatenablog.com/entry/2021/04/03/004254 https://dk521123.hatenablog.com/entry/2021/04/04/111057 の続き。 RDD(Resilient Distributed Dataset)について、 ちょ…

【分散処理】PySpark ~ RDD / 基本編 ~

■ はじめに https://dk521123.hatenablog.com/entry/2019/11/14/221126 https://dk521123.hatenablog.com/entry/2021/04/03/004254 の続き。 RDD(Resilient Distributed Dataset)をもう少し深堀する。 目次 【1】RDDの生成 1)parallelize 2)textFile …

【分散処理】PySpark ~ 入門編 ~

■ はじめに https://dk521123.hatenablog.com/entry/2019/11/14/221126 の続き。 PySpark を使って、データ処理をすることになったので、メモする。 目次 【1】関連用語 1)RDD(Resilient Distributed Dataset) 2)DataFrame 【2】サンプル 例1:テキ…

【トラブル】PySpark 環境構築時のトラブルシューティング

■ はじめに https://dk521123.hatenablog.com/entry/2019/09/18/214814 https://dk521123.hatenablog.com/entry/2019/11/14/221126 で、PySpark を構築した際に発生したトラブルを纏める 目次 【1】エラー「Py4JError: xxx does not exist in the JVM」が表…

【分散処理】PySpark ~ CSV / escape ~

■ はじめに https://dk521123.hatenablog.com/entry/2019/11/24/225534 https://dk521123.hatenablog.com/entry/2020/07/30/195226 https://dk521123.hatenablog.com/entry/2020/07/09/000832 の続き。 PandasでCSVを正しくパースされていたファイルが PySpa…

【分散処理】PySpark ~ DataFrame / 項目数を取得するには ~

■ はじめに https://dk521123.hatenablog.com/entry/2020/05/18/154829 の続き。 小ネタ。 デフォルト項目名「_c0」などの項目を変更するのに 項目数を取得したかったのでメモする 目次 【1】項目数を取得するには 【2】サンプル 例1:簡単なサンプル 例…

【分散処理】PySpark ~ CSV / Read/Writeのプロパティ ~

■ はじめに https://dk521123.hatenablog.com/entry/2019/11/24/225534 https://dk521123.hatenablog.com/entry/2020/07/09/000832 https://dk521123.hatenablog.com/entry/2020/11/23/224349 の続き。 今回は、PySpark において、 CSV の Read/Writeのプロ…