Category:

Spark(with Yarn)におけるメモリ設定

Dataprocで Spark を利用することがあるのですが、メモリに関する設定でいつもよく分からなくなるので、備忘録的に残しておきます。Resource Managerに Hadoop Yarn を利用しているケースになります。 メモリ設定の包含関係 Sparkに関する設定はこちら、Yarnに関する設定はこちらに書いてあります。 各Executorノードのメモリ設定は以下のような包含関係になっているようです。 マシンメモリ OS その他 yarn.nodemanager.resource.memory-mbコンテナに割り当て可能な物理メモリ spark.executor.memoryOverhead1ExecutorあたりのVMオーバーヘッド、インターン化文字列、その他Nativeオーバヘッドなど spark.executor.memory1Executorが利用する最大メモリサイズ s Continue Reading

Posted On :

pythonでスクレイピングする際に利用するライブラリ比較

Pythonでスクレイピングを実装する機会があったので、その中で利用した(もしくは技術検証した)ライブラリについて、特徴やどういう時に利用するかについて個人的な見解を書いていこうと思います。 requests 指定したURLに対してリクエストを投げて、レスポンスを取得することができるシンプルなライブラリです。 JavaScript実行を必要としないような静的なサイトからResponseを取得する目的であればこれで十分です。 特徴 HTTPレスポンス(ヘッダー、ステータスコード、HTML)を取得できる リクエストヘッダーやクッキーを指定してリクエストすることができる リダイレクト(301や302など)もしてくれる urllib3.util.retry.Retryと一緒に使えばリトライもできる response.textで本文を取得する際、charsetをよしなに解釈してdecodeして文字列 Continue Reading

Posted On :
Category:

Scrapyの使い方

Scrapy は、Webサイトをクロールし、ページから構造化データを抽出するために使用されるWebスクレイピングフレームワークです。Scrapyに関してはわかりやすい記事がたくさんあるので、ここでは実装サンプルを紹介しまくるスタンスにしようと思います。 インストール pip install scrapy # or poetry add scrapy チュートリアルを試す こちらにしたがって、チュートリアルを試してみます。 scrapy startproject tutorial or poetry run scrapy startproject tutorial を実行するとtutorialフォルダができてその下にテンプレートのソースコード一式が出力されます。 tutorial/spidersフォルダの下に以下の内容でquotes_spider.pyを作ります。 import scrapy Continue Reading

Posted On :

pyppeteerの使い方

pyppeteerは、npmモジュールであるpuppeteerをpythonに移植したものです。 例えば、以下のようなことができます。 ヘッドレスブラウザ(chromium)を開く 実際にブラウザ内でページを読み込む CSSセレクタでHTMLエレメントを取得する HTMLエレメントをクリックし、画面遷移する JavaScriptも実行されるので動的に描画された後のHTMLを取得する Cookieも共有されるので、Cookieやセッションが必要なサイトのスクレイピングもできる インストール pip install pyppeteer # or poetry add pyppeteer シンプルな使い方 こちらのサイトにログインするサンプルを書いてみました。 import asyncio from pyppeteer.launcher import launch from pyppeteer. Continue Reading

Posted On :
Category:

Firestoreのコストリスク削減

Firestore + typescript を使ってフロントエンドアプリ(Chrome拡張)を作っているのですが、DOS攻撃をうけたり、単純に利用者数が多かったりすると普通にFirestoreの無料枠を超える可能性があります。コストリスクを下げるために、色々対策を実施したので紹介しようと思います。 Firestoreの料金 まずは、FireStoreの料金体系について紹介します。思ったより無料枠が少ないです。 無料枠 こちらを参照しました。単位が書いてないのですが、おそらくアクセスするドキュメント数です。読み取り、書き込み、削除の制限が結構厳しくて、何も考えずに実装していると超えてしまいそうです。そうじゃなくても、一覧画面とかで F5 アタックとかされたら簡単に無料枠を超えてしまいそうです。 処理区分 無料枠 保存データ 1 GiB ドキュメントの読み取り 50,000/日 ドキュメント Continue Reading

Posted On :

typescriptプロジェクトにreCAPTCHA v2 & v3を導入

reCAPTCHAはスパムやBOTなどからサイトを保護するためのもので、v2とv3があります。今回は自分がtypescriptで作っているフロントエンドアプリ(Chrome拡張)をBOTアクセスから保護する目的でreCAPTCHAのv2とv3の両方を同じ画面に導入しました。 v2とv3 v2はWEBサイトでみかけるやつで「この中から車が写っている画像を選んでください」みたいな感じで、ユーザ操作の結果でBOTアクセスなのかどうか(True/False)を返してくれます。 v3は、ユーザフリクション(本来の目的を妨げるような事象。)は一切なく、スコア(1が正常で、0.0に近づくほどBOTの可能性が高い)を返してくれます。 処理の流れ DBにアクセスする3つのアクション(Chrome拡張起動、保存ボタン、削除ボタン)の際にv3を使ってスコアを計算する フロントエンド(Chrome拡張のポップアッ Continue Reading

Posted On :