iMind Developers Blog

iMind開発者ブログ

Wondershaperによる帯域制限

概要 クラウド上にいるサーバーのネットワークの使用量をある程度キャップしたい。 バージョン情報 wondershaper 1.1a-9 Ubuntu 18.04.2 導入 $ sudo apt install wondershaper 制限をかける wondershaperで制限をかける際の文法は下記。 wondershaper [inte…

FaceNetを動かしてみる

概要 顔認識システムのFaceNetを使って顔の距離計算をしてみる。 バージョン情報 FaceNet Latest commit 096ed77 on 17 Apr 2018 顔認証の実装について 顔認証が可能な実装として他にOpenFaceがある。アルゴリズムはFaceNetに近い。 FaceNetはTensorflowとPy…

FaceNetの論文を読んだメモ

概要 顔認証の勉強中に、FaceNet: A Unified Embedding for Face Recognition and Clusteringを読む。そのメモ書き。 下記がその論文。 https://arxiv.org/abs/1503.03832 下記がその実装。 https://github.com/davidsandberg/facenet Abstract まずはFaceNe…

OpenCVとdlibによるFace Detection(顔認識)

概要 Face DetectしたかったのでOpenCVとdlibをそれぞれサンプルコードを動かす。 バージョン情報 Python 3.7.3 dlib==19.17.0 OpenCV==3.4.2 インストール condaで仮想環境作ってOpenCVとdlibを導入する。 pipとかjupyterとかscikit-imageとか他に使いそう…

scikit-imageとscikit-learn付属のサンプル画像

概要 画像処理のコードを書いてブログに例を載せたい時に、拾い物の写真だと権利周りが気になる。 そんな時に使えることがあるskimageやsklearnのサンプル画像を貼っていく。 バージョン情報 scikit-image==0.15.0 scikit-learn==0.20.3 データの配置場所 sc…

HBaseの情報をhiveで操作する

概要 HBaseに対してがっつりinsertやselectする際はhiveと連携させると楽だった。 バージョン情報 Hive 1.1.0 HBase 1.2.0 参考情報 https://cwiki.apache.org/confluence/display/Hive/HBaseIntegration keyとvalueだけを持つテーブルの生成 今回のサンプル…

Airflowの日付マクロまとめ

概要 Airflowのテンプレートに日付を埋め込む時に毎回ググってる気がしてきたので、自分用のまとめを書いた。 バージョン情報 apache-airflow==1.10.3 参考URL https://airflow.apache.org/macros.html 確認用スクリプト contextの中にいるtsとかdsとかds_no…

AirflowのConnectionやVariableをCLIで投入する

概要 ConnectionやVariableの値はWeb UIから入れられるけど、実運用ではコマンドラインから構築できるようになっていた方が便利。 試しにConnectionとVariableにそれぞれ値を投入してみる。 バージョン情報 Python 3.6.7 apache-airflow==1.10.3 Connections…

hbase shellのコマンドまとめ

概要 HBaseを使う際のコマンドをhbase shellでちょっと確認。 バージョン情報 HBase 1.2.0 hbase shellの起動 $ hbase shell helpの参照 > help 機能ごとのhelpの参照。下記はcreateの例。 > help 'create' テーブル生成 exampleテーブルの生成。 > create '…

pandasのファイル出力形式まとめ

概要 pandasにはcsvやpickle、parquetなど様々な形式でのデータ出力が用意されている。 各出力形式で実際にデータを出力して結果や実行時間を確認してみる。 実行時間はipython上で%%timeを用いて計測。小数点以下はround。記事の最後に実行時間と出力サイズ…

Pythonのpsutilでハードウェアの情報を取得する

概要 psutilでCPUのコア数、ディスクの空き容量、メモリの使用量等、ハードウェアの情報を取得する。 バージョン情報 Python 3.6.8 psutil==4.4.2 Ubuntu 18.04.1 インストール $ pip install psutil CPUのコア数 import psutil psutil.cpu_count() => 8 上…

PythonでElasticsearchの操作

概要 PythonからElasticsearchにデータの登録、検索、削除を行う。 バージョン情報 Python 3.6.8 (elasticsearch==6.3.1) Elasticsarch 6.5.4 導入 PythonのElasticsearchクライアントを入れておく。 $ pip install elasticsearch ElasticsarchはDockerで立…

PySparkで1レコードを複数行にする

概要 PySparkでexplodeやflatMap、mapPartitionsを用いて1レコードを複数レコードに加工する。またgroupByで元の1レコードに戻す。 バージョン情報 spark-2.3.1 Python 3.5.5 サンプルデータ id, title, tagsの3つのカラムを持つcsvファイルがあるとする。ta…

pandasのapplyの進捗をtqdmで表示

概要 pandasで大きめのDataFrameに対してapplyすると、いつまで待てば結果が返るのか不安になることがあるのでtqdmで進捗を表示したい。 バージョン情報 Python 3.6.8 tqdm==4.31.1 pandas==0.23.4 サンプルデータ ランダムな数値で1万行のDataFrameを作成し…

Azure CLIで利用可能なリージョンの一覧を取得する

概要 リージョン一覧自体は下記ページなどに載っているけど、利用可能でないリージョンも載っていたりAzure CLIで指定するNameが載っていなかったりする。 Azure Locations | Microsoft Azure CLIを利用して利用可能なリージョンとそのNameについても取得す…

AirflowでMySQL/PostgreSQLのconnectionの取得

概要 AirflowのConnectionsで設定したDBへの接続情報を利用して、Pythonのスクリプト上でDBへ接続する。 サービスで利用するDBの接続情報(ユーザー名/パスワード等)をAirflowで管理してしまおうという考え。 バージョン情報 Python 3.6.7 apache-airflow==…

condaのPythonのバージョン管理

概要 condaで使っているPythonのバージョンを上げたり下げたりする。 バージョン情報 conda 4.6.7 Pythonのバージョンを更新する envに作るのではなく $CONDA_HOME/bin/python 自身のバージョンを上げる場合。 実行前のPythonのバージョン $ python --versi…

AzureでNIC2枚挿し

概要 Azureで1台のVMにNICを2枚挿したかった。 バージョン情報 azure-cli 2.0.54-1 Ubuntu 18.04.1 LTS vmの立ち上げ まずは適当な名前でVMを生成。 RESOURCE_GROUP=your_resource_group_name $ az vm create \ --resource-group $RESOURCE_GROUP \ --name e…

Azure CLIで任意のバージョンでLinuxのVMを立ち上げる

概要 これを書いている時点で az vm create --image UbuntuLTS を指定すると16.04が立ち上がってきたので、18.04を指定してみる。 バージョン情報 azure-cli 2.0.54-1 Ubuntu 18.04 Imageの検索 利用可能なイメージを検索する。下記はUbuntuの例。(このコマ…

AzureのVMのディスク容量をCLIで増やす

概要 AzureのVMを作成した後、deallocateしてディスク容量を変更して再度立ち上げる。 バージョン情報 azure-cli 2.0.54-1 参考URL ほぼ下記URLに書かれている手順をなぞる。 https://docs.microsoft.com/en-us/azure/virtual-machines/linux/expand-disks V…

CLIでAzureの操作

概要 AzureをCLIで扱った経験がなかったもんで、下記などの基本的な操作を実行してみる。 インスタンスの開始・終了 ストレージの作成とattach ファイルストレージの操作 バージョン情報 azure-cli 2.0.54-1 Ubuntu 18.04.1 LTS 導入 MSのサイトを参考にazur…

XfceでSuper+wで開くブラウザを変更する

概要 何かの拍子にブラウザのデフォルトがChromiumになってしまったのでFirefoxに戻したかった。 バージョン情報 Xubuntu 18.04 ブラウザの立ち上げについて Super+wによるWebブラウザの立ち上げはコマンド的には下記になる。 $ exo-open --launch WebBrowse…

AirflowでFailedのタスクをまとめてリトライ

概要 週明けに出社したらAirflowのTask Instancesが真っ赤になっていた。 そんな時、1つずつタスクをリトライしていくのは辛いのでコマンドでまとめてリトライする方法を確認する。 また、再実行する必要がない場合にまとめてSuccessにアップデートする方法…

Apache AirflowのDBをPostgreSQLに切り替える

概要 Apache AirflowのDBはデフォルトではSQLiteになっているが、これをPostgreSQLに切り替えてみる。 バージョン情報 Python 3.6.5 apache-airflow==1.10.1 psycopg2==2.7.5 上記が既にインストールされている前提で作業を進める。 DBとUserの生成 下記のSQ…

Ansibleでディスク容量チェック

概要 複数台のディスクスペースをチェックしてエラーを投げる処理を書きたかった。 サーバー側には何も入れたくなかったのでAnsibleで実行してみる。 バージョン情報 ansible 2.7.6 やり方 StackOverflowによるとansible_mountの結果からsize_availableやsiz…

Pythonで簡易な名前からの性別判定器を書く

概要 名前から性別を判定するのって簡単にできるのかな、ということで簡易な判定器を書いて試してみる。 バージョン情報 Python 3.6.8 scikit-learn==0.19.1 xgboost==0.72.1 テストデータ 名前一覧とか名前ランキング的なページをスクレイピングして27,326…

AirflowでWeb画面からDAGを消せなかった場合

概要 AirflowでWeb画面からDAGを削除しようとした場合に「DAG with id {DAG_ID} not found. Cannot delete」というエラーが出ることがある。 これの削除の仕方。 バージョン情報 Python 3.6.7 apache-airflow==1.10.1 CUIでの削除 CUIから「airflow delete_d…

Pythonのsubprocessで標準出力を取得

概要 Pythonで外部コマンドを呼んで標準出力を文字列で取得する。 バージョン情報 Python 3.6.8 事前準備 標準出力と標準エラーに出力する下記のようなコード(out.py)を用意しておく。 import sys print('standard out') print('standard error', file=sys…

Airflowのdags内でairflow.cfgの値を参照する

概要 $AIRFLOW_HOME/airflow.cfgファイルに記述した内容をPythonのコードから取りたかった。 バージョン情報 Python 3.6.7 apache-airflow==1.10.1 settingsを参照する AIRFLOW_HOMEやDAGS_FOLDERの値はairflow.settingsに入っている。 import airflow # air…

Ubuntu18.04にDockerを入れてMySQLとPostgreSQLを動かす

概要 Ubuntuの18.04を入れてからDockerを使ってなかったので、docker-composeも含めたインストールと申し訳程度にMySQLとPostgreSQLを動かすあたりをメモしておく。 バージョン情報 Ubuntu 18.04.1 LTS Docker 18.09.0 docker-compose 1.23.2 mysql 8.0.13 P…