中野智文のブログ

データ・マエショリストのメモ

luigi で パラメータで与えられた日付をtimedelta を使って増減させたい

背景 luigi にて、パラメータで与えられた日付に対して、固定日分前(例えば一週間など)を求めたい。 from datetime import timedelta import luigi class MyTask(luigi.Task): date = luigi.DateParameter() start_date = date - timedelta(days=7) と書く…

luigi の RangeDaily をコードで使う

背景 範囲日の繰り返し DateIntervalParameter 指定した範囲の日の処理を指定したい場合は、チュートリアルには次のようなコード例がある。 http://luigi.readthedocs.io/en/stable/example_top_artists.html#step-1b-running-this-in-hadoop def requires(s…

Julia の GaussianProcesses を jupyter notebook で表示する

背景 そろそろ jupyter notebook を使いたくなってきた。 前回、Gaussian Processes のライブラリを入れるところまではできたので(下記参照) nakano-tomofumi.hatenablog.com 今回は、jupyter notebook 上でグラフを表示するところまでやってみる。 IJulia…

BigQuery のスキーマを bq コマンドで使う形式で表示する jq

背景 ある日の空テーブルを作成しようとしたが、スキーマの文字列が必要になった。手作業だとミスが起こるから、コマンドが欲しい。 jq コマンド スキーマ文字列を取得 $ bq show --format prettyjson <既存のBQのテーブル名> | jq -r '.schema[] | map(.nam…

Julia の GaussianProcesses のライブラリを入れようとする (2)

前回はこちら nakano-tomofumi.hatenablog.com Optim の仕様変更への対応 問題のエラーは、次のようなもの julia> optimize!(gp) ERROR: MethodError: no method matching set_params!(::GaussianProcesses.GP, ::Float64; noise=true, mean=true, kern=true…

Julia の GaussianProcesses のライブラリを入れようとする

背景 連続腕バンディット(それもトンプソンサンプリング)をやってみようと思った。 ベルヌーイ分布のトンプソンサンプリングは、ベータ分布の乱数生成だけが肝だが、ライブラリを使ったり、最悪Cの関数を参考にしながら自分で実装すれば特に問題はない。 …

mac の gimp から印刷

背景 証明書写真を印刷したい。1mm もサイズが違わないように印刷したい。 結論 mac の gimp から印刷はうまくいかない。一旦、jpeg にして、jpeg を mac の previewer で詳細な印刷設定をしてうまくいく。 印刷前までの方法 ほぼ、下記の通り fanblogs.jp …

トラフィックエクスチェンジの闇

背景 ad fraud を追う間に、「トラフィックエクスチェンジ」というサービスを知ることになった。 トラフィックエクスチェンジとは、サイト間でユーザを交換しようという試みである。 まだ検索エンジンがあまり発展していなかった時代などは、サイト間のリン…

29戦中29連勝の勝率の信頼区間を求める

背景 仕事でどうしても必要になった(嘘) Wilson score interval で計算する。 早速だけど、下記の式を使ってみよう。 nakano-tomofumi.hatenablog.com 今回は、p = 0.05 で求める。標準正規分布の分位数はZ=1.96となる。 よって、 UCB: (29+1.96*1.96/2+1.…

BigQuery でテーブルを正規表現を指定して削除する

背景 BigQuery で特定のテーブルをワイルドカードで指定して削除したいことがある。ところが、CLIコマンドである bq はそのようなワイルドカード指定はできない。 データセットのファイル一覧を出して、それを egrep で抽出する 下記の <dataset_name> と、<regular expression> にそれぞれ、デ</regular></dataset_name>…

pdf を送ると、「Kindleに送信された文書に問題がありました」

症状 次の論文をchromeでダウンロードして、 https://openreview.net/pdf?id=BkJsCIcgl mail で kindle に送信すると次のようなエラーメールが届く 2017年6月19日(月) 午前 09:59(JST) に送信された以下のドキュメントは、指定されたKindle に送信できません…

Permission denied while globbing file pattern. のエラー

症状 BigQuery のWebコンソールでは特にエラーは出ないのに、redash だと Error running query: The job encountered an internal error during execution and was unable to complete successfully. みたいなエラー。 調査 コマンドコンソールにて同クエリ…

luigi の exit status

luigi の exit status は失敗しても 0 が返ってくるので、make などから呼び出した場合、そのまま通過してしまう。 調べると、次のページが見つかる。 qiita.com 実はコマンドラインのオプションでも設定できる。 $ luigi --help-all ... --retcode-unhandle…

Airflow と格闘中(15)

nakano-tomofumi.hatenablog.com 上記のように、もう使わない予定だが、エラーが出たので貼り付ける。 backfill で deadlocked エラー Traceback (most recent call last): File "/XXX/bin/airflow", line 28, in <module> args.func(args) File "/XXX/lib/python2.7</module>…

会社の新しいmac book pro に Julia をインストールする

自宅 mac の Julia のインストールには結構時間がかかった。 nakano-tomofumi.hatenablog.com 今回は会社の mac book pro にインストールする。 brew cask install julia でインストール cask 版を使ったら驚くべきことにサクッとインストールできた。 $ bre…

Airflow をおすすめしない理由

これまでずっと airflow と格闘してきたが(下記参照) nakano-tomofumi.hatenablog.com ここで一旦まとめることにする。 Airflow をおすすめしない理由 【致命的】Scheduler がコケる。 タスクは別プロセスで実行されるが、スケジュールもコードで書いてあ…

Airflow と格闘中(14)

nakano-tomofumi.hatenablog.com のつづき。 エラーで scheduler が落ちる。 次のエラーで落ちる。 Traceback (most recent call last): File "/XXX/python/venv/bin/airflow", line 28, in <module> args.func(args) File "/XXX/python/venv/lib/python2.7/site-pac</module>…

Airflow と格闘中(13)

nakano-tomofumi.hatenablog.com のつづき pause なんて知らない。 やっと原因の一つが分かった。 stackoverflow.com DAGが (デフォルトで)pause されていたのだ。でも pause されているなんてどこにも書いていない。 Scheduling & Triggers の項目にも、T…

Airflow と格闘中(12)

nakano-tomofumi.hatenablog.com Scheduling & Triggers の To Keep in Mind を読む。 以下を読む。 Scheduling & Triggers — Airflow Documentation 以下超訳(カッコ内は自分の感想) DAG Run は start_date から始まるよ。これは日付をしないときの話かな…

自宅macのJuliaLang環境を治す(3)

nakano-tomofumi.hatenablog.com の続き ちょっと変化があった。 $ brew test -v julia Testing staticfloat/julia/julia ==> Using the sandbox /usr/bin/sandbox-exec -f /tmp/homebrew20170526-45995-169fe4y.sb /System/Library/Frameworks/Ruby.framewo…

自宅macのJuliaLang環境を治す(2)

nakano-tomofumi.hatenablog.com のつづき。 xcode を入れる。 app store にて。 julia を再インストール $ brew reinstall julia Error: You have not agreed to the Xcode license. Please resolve this by running: sudo xcodebuild -license accept とで…

自宅のMacにRを入れる

背景 Juliaを入れ直そうと思ったら、うまくいかない。 Rを入れる。 とりあえず、Rをいれればなんとかなるかもしれない。 OS XにRをインストールするときに知っておきたいこと - Qiita にしたがって、brew で入れる方法を試すことに $ brew tap homebrew/scie…

virtualbox の時刻がずれている

背景 make をやっても、うまくいかないことがある。 ターゲットを共通化するために、前処理の複数のターゲットのアウトプットを同じものにしてあったが、 時刻がずれているため?、本来意図してない処理が呼ばれてしまう模様。 ntpd がインストールされてい…

自宅macのJuliaLang環境を治す

背景 色々不具合があるので修正しよう。 brew doctor のメッセージ Warning: You have unlinked kegs in your Cellar Leaving kegs unlinked can lead to build-trouble and cause brews that depend on those kegs to fail to run properly once built. Run…

luigi と格闘中

背景 luigi と airflow と make を比較している。 luigi と格闘中 big query のクエリを書き換えたので再実行 あれ? 再実行されない。 ズバリな記事が見つかる。 datapipelinearchitect.com なるほど…。というか、removing all intermediate and final outp…

Wilson score interval を使う。

背景 以前、 blog.goo.ne.jp にて、Wilson score interval with continuity correction の式のテンプレートを書いたが、本当は外側に条件分岐 if が必要だったり、判別式の中が負になることもあったりと、ちょっと注意して使う必要があった(おいおい)。ち…

airflow と格闘中 (11)

nakano-tomofumi.hatenablog.com のつづき pysqlite2 がない apt-get install sqlite3-dev pip install pysqlite click がない? 次のエラー [2017-05-15 10:12:53,877] {__init__.py:57} INFO - Using executor SequentialExecutor Traceback (most recent …

gdrive の import ができなくなった。

背景 もともと、 github.com の問題に対応するため、パッチを作った(つもりだった)。 症状 別環境で試すことになったので、もう一度 build してみると、なんと動かなくなっているんだよね。 (すなわち issue の状態) 調査 バックアップ とりあえず、現行…

airflow と格闘中(10)

nakano-tomofumi.hatenablog.com のつづき。 いろいろあって、現在の mac 上でいろいろ検証するよりも、本番マシンに近い、仮想マシンで色々やったほうが良さそう、ということになった。 vm上で install しようとするも、numpy のコンパイルらしきものが始ま…

vagrant の Synced Folders で gest 側は強制的にディレクトリが作成される

これを抑制するオプションはなさそう。 www.vagrantup.com

airflow と格闘中(9)

nakano-tomofumi.hatenablog.com のつづき。 いやーもう本当に終わりにしたい。 前回のデッドロックの原因は、基本的には DAG ファイルの方のバグだった。しかしDAGファイルは最低でも dry run しとけ、ということだろう。 しかしデッドロックが表示されると…

airflow と格闘中(8)

nakano-tomofumi.hatenablog.com のつづき。 GWも明けたが、先週に引き続き、会社のノートPCを交換中。なので更新遅め。 backfill に戻したら、BackfillJob is deadlocked. うーむ。。。 trigger にするために終了を確認するファイルを touch していたのだが…

airflow と格闘中(7)

nakano-tomofumi.hatenablog.com のつづき。 結局 trigger_dag によって未だに成功はしていない。 trigger_dag はDAG(タスク)の終了までコマンドを待たない さらに大事なことに気がついた。luigi の実行では、その実行コマンドがタスクが全て完了するまで…

Airflow と格闘中(6)

皆様に置きましてはGW中かもしれませんが、小学生を持つ親は、小学校が休みでない以上、普通に出勤となります。 nakano-tomofumi.hatenablog.com のつづき。 scheduler が正解。 というかドキュメントは最後まで読もう。scheduler を起動しておいて、 trigge…

Airflow と格闘中(5)

nakano-tomofumi.hatenablog.com のつづき。 今日で終わりにしたい。 airflow のコマンドを調べる render タスクの実行内容を表示する。BashOperator なら test -dr とほぼ同等。 trigger_dags DAG の実行のトリガーを引く。求めていた機能の可能性。 -e オ…

Airflow と格闘中(4)

nakano-tomofumi.hatenablog.com のつづき。 多重実行は同時実行も完了タスクの実行もされちゃう backfill であるからか、普通に多重実行はされてしまう。多重実行と言っても、同時に実行と、既に完了したタスクの実行の二種類があると思うが、両方共実行さ…

AirFlow と格闘中(3)

nakano-tomofumi.hatenablog.com のつづき。 run で確認し、backfill で全体確認する Makefile から呼び出す想定だと(スケジューラであるはずの AirFlow をそのような形で呼び出すこと自体おかしいという話もあるが、まずは移行から始まるので…)、コマンド…

AirFlow と格闘中(2)

nakano-tomofumi.hatenablog.com のつづき。 upstream と downstream の違い upstream と downstream の違いが分からないわけではないが、両側から設定できるのは何の意味があるのか。 特に書いてないから、気になるは気になる…。(おそらくどっちでもいい)…

Airflow と格闘中

背景 luigi と airflow の使い勝手を比較したい。 現在は Makefile で ruby のワンライナーで日付を生成して xargs で make を呼んだりしている。 作業 luigi airflow と比べるとすんなりできた。 airflow 以下にハマったところを書く。 自動生成されたファ…