Spark / PySpark

【分散処理】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のプロ…

【トラブル】【PySpark】PySpark でエラー「Exception: It appears ...」が表示された

■ 現象 https://dk521123.hatenablog.com/entry/2020/07/09/000832 の機能を、クラス内部に組み込んだ際(詳細は後述の「修正後」を参照)に 以下「■ エラーメッセージ」が表示された ■ エラーメッセージ Exception: It appears that you are attempting to …

【分散処理】PySpark ~ エスケープされた区切り文字が含んだデータを扱う ~

■ はじめに https://dk521123.hatenablog.com/entry/2019/11/24/225534 で、PySpark で、CSVファイルを扱った。 ただ、以下のサイト「Spark 2.0 Scala - Read csv files with escaped delimiters」 https://stackoverrun.com/ja/q/10868798 のように、項目「…

【分散処理】PySpark ~ データをクリーニングする ~

■ はじめに https://dk521123.hatenablog.com/entry/2020/07/06/232350 で行った処理を、PySpackで行ってみた 目次 【1】CASE文を使って値を置き換える 【1】CASE文を使って値を置き換える from pyspark import SparkContext from pyspark.sql import Spar…

【分散処理】PySpark ~ PySpark経由でDBに接続する ~

■ はじめに PySpark経由でDB(今回は「PostgreSQL」)に接続する方法を メモっておく。 ■ 準備 JDBC 接続するので、DB の JDBC ドライバを用意しておくこと 今回は、PostgreSQLなので、以下のサイトからダウンロードした (今回は、「postgresql-42.2.14.jar」)…

【Spark】Parquet ファイル

■ はじめに 以下のサイトにある Parquet ファイル に関するメモ。 http://mogile.web.fc2.com/spark/sql-data-sources-parquet.html ■ Apache Parquet ファイル * Twitter 社で開発 * 列指向(カラムナ)フォーマット ※ 列指向型については、以下の関連記事…

【分散処理】PySpark ~ ユーザ定義関数 UDF 編 ~

■ はじめに PySpark の UDF (User Defined Function) っての学ぶ。 目次 【1】UDF とは 【2】UDF定義方法 1)udf関数から取り込む 2)デコレータを利用する方法 3)spark.udf.register() で登録する 【3】使用上の注意 【4】サンプル なお、以下の関…