【Hive】Hive / HiveQL ~ Hiveの変数 ~

■ はじめに hive の変数 hiveconf について扱ったのでまとめておく。 目次 【0】公式ドキュメント 【1】Hiveの変数の種類 1)hivevar 2)hiveconf 3)env 4)system 【2】指定の仕方 1)コマンドラインからの指定 2)ファイル内での指定 【3】デバ…

【Hadoop】Apache Hadoop ~ 設定プロパティ ~

■ はじめに https://dk521123.hatenablog.com/entry/2020/09/19/152136 の続き。 今回は、Apache Hadoop に関する設定プロパティについて メモしておく。 目次 【1】mapreduce.{map|reduce} 1)mapreduce.{map|reduce}.memory.md 2)mapreduce.{map|reduc…

【Hive】Hive / HiveQL ~ HiveQL関数 / NULL関連編 ~

■ はじめに https://dk521123.hatenablog.com/entry/2020/03/10/224640 https://dk521123.hatenablog.com/entry/2021/06/18/184713 https://dk521123.hatenablog.com/entry/2021/06/21/231033 の続き。 COALESCEを使っている処理があったので、 COALESCE や …

【Hive】Hive / HiveQL ~ HiveQL関数・文字列関数編 ~

■ はじめに https://dk521123.hatenablog.com/entry/2020/03/10/224640 https://dk521123.hatenablog.com/entry/2021/06/18/184713 の続き。 今回は、文字列操作する際の関数群をまとめておく。 目次 【0】API仕様 【1】lower() / lcase() 【2】upper() /…

【Hive】Hive / HiveQL ~ CASE文 ~

■ はじめに https://dk521123.hatenablog.com/entry/2021/06/18/184713 で、CASE文を使った際に、 構文エラーになった (ただ単に「end」が抜けていた) ので hive の CASE文について、整理しておく。 目次 【1】CASE文 - CASE statements 【2】構文 1)単…

【Hive】Hive / HiveQL ~ HiveQL関数・regexp_replace編 ~

■ はじめに https://dk521123.hatenablog.com/entry/2020/03/10/224640 の続き。 長いHQLを実行した際にエラーになったので、 その長いHQLのサブクエリを単独で実行してどこに原因があるかを 調査していた。 その際、regexp_replace を使っていたので、メモ…

【トラブル】【AWS】EMR / DBアクセス に関するトラブルシューティング

■ はじめに Amazon EMR 上で エラー「Error encountered near token 'TOK_TMP_FILE'」や エラー「NoRouteToHostException: No route to host」が発生した。 その際の調査方法や解決案などを記しておく。 目次 【1】発生現象 / エラー内容 1)Create table …

【Hive】Hive / HiveQL ~ JOIN文 ~

■ はじめに https://dk521123.hatenablog.com/entry/2021/06/12/093046 に関して、細かく調査したら、JOIN の ON がないので、 交差結合(CROSS JOIN, Cartesian product)になり エラーが起きてたのが分かった。 そこで、今回は JOIN文について、改めて纏め…

【トラブル】【Hive】エラー「SemanticException Cartesian products are disabled for safety reasons」が発生する

■ はじめに https://dk521123.hatenablog.com/entry/2020/05/28/175428 https://dk521123.hatenablog.com/entry/2020/11/20/174039 の続き。 今回は、別環境で動いているHQLを実行したら エラーになった際のトラブルシュートをメモする。 目次 【1】概要 【…

【AWS】AWS Glue ~ Boto3 / DB・テーブル操作編 ~

AWS

■ はじめに https://dk521123.hatenablog.com/entry/2021/06/09/113458 の続き。 今回は、Glue で使用するテーブル情報取得および作成について扱う。 (本当は、テーブル操作までにするつもりだったが) 「【2】テーブル作成」の際に「EntityNotFoundExcept…

【AWS】AWS Glue ~ Boto3 / パーティション操作編 ~

AWS

■ はじめに https://dk521123.hatenablog.com/entry/2021/05/28/142153 のAWS Management Console画面において、 パーティションを個別で削除しようと思ったが、 画面からは削除できなかったため、 代わりに、Boto3のAPIを使って、削除した。 (ちなみに、パ…

【AWS】Amazon EventBridge

AWS

■ はじめに Amazon EventBridge に関して扱うかもしれないので どんなサービスなのかを調べてみた。 目次 【1】EventBridge とは? 【2】EventBridge の 利点 【3】Amazon Cloud Watch Eventsとの違い 【4】AWS サービスからのイベント 【1】EventBridg…

【Python】Python ~ 基本編 / 先頭・末尾の文字列除去 ~

■ はじめに https://dk521123.hatenablog.com/entry/2019/10/12/075251 の続き。 Python は使いやすい言語だと思うが、いけていない点がある。 今回は、その中の一部で「先頭・末尾の文字列除去」について扱う (例えば、http://xxxx/xxxxって際に「xxxx/xxx…

【AWS】Amazon SNS ~ 通知サービス ~

AWS

■ はじめに https://dk521123.hatenablog.com/entry/2017/04/28/234103 の続き。 AWS EMRで失敗した際のイベント通知方法を調べていたら、 以下のサイトが見つかり、そこに 「Amazon Simple Notification Service (Amazon SNS)」と あったので、どんなサービ…

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

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

【AWS】AWS Glue ~ クローリング結果の確認画面 ~

AWS

■ はじめに https://dk521123.hatenablog.com/entry/2019/12/01/003455 で行ったクローラでの動作後に AWS Glue で [Databases]-[Tables] に遷移して クローリング結果を確認する際に表示項目などに不明点があった。 そこで、今回は、そのページおよびその派…

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

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

【Hive】【SQL】差集合 ~ EXCEPT / MINUS etc ~

SQL

■ はじめに https://dk521123.hatenablog.com/entry/2021/02/11/233633 で記載した警告文 ~~~~~~~ unix_timestamp(void) is deprecated. Use current_timestamp instead. ~~~~~~~ に対応し、クエリを修正したのだが、 修正前と修正後の確認で、SQL文「MINUS…

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

【AWS】Glue Job から パーティションを更新することを考える

AWS

■ はじめに https://dk521123.hatenablog.com/entry/2021/05/14/095125 の続き。 Glue Job からパーティション更新を行うことを考える。 目次 ■ Job からパーティション更新実装案 ■ 案1)GlueContext クラスを駆使して実装する 方法 1:write_dynamic_fram…

【AWS】Glue からクローリングして外部テーブルを作成する

AWS

■ はじめに https://dk521123.hatenablog.com/entry/2019/12/01/003455 の続き。 今回は、Glue で作成したファイルを外部テーブルにする際に 得た知識・ノウハウをメモしておく。 軽く書くつもりが、結構なボリュームになってしまった、、、 目次 【1】Glue…

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

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

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

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

【AWS】Glue から DataCatalogテーブル に対して Spark SQLを実行する

AWS

■ はじめに Glue から DataCatalogテーブル に対して Spark SQLを実行した際に、いくつか注意点があるので メモしておく 目次 【1】使用上の注意 1)Glue Job で Glue DataCatalog を有効にする 2)「select * from [DB].[Table] ...」ではなく「use [DB]…