山pの楽しいお勉強生活

勉強の成果を垂れ流していきます

2021-01-01から1年間の記事一覧

PySparkでDataFrame.cacheはMEMORY_AND_DISKレベルキャッシュされる

概要 タイトルが全て MEMORY_ONLYだと勘違いしていたためメモ persistも引数なしで呼び出すとMEMORY_AND_DISKなので同じ https://spark.apache.org/docs/3.2.0/api/python/reference/api/pyspark.sql.DataFrame.cache.html https://spark.apache.org/docs/3.…

Xiaomi Pad 5(MIUI12)を複数アカウント(ユーザー)で使用する

はじめに Xiaomi Pad5を購入したものの、デフォルトでは複数ユーザーで使用ができない? 端末というより、OSであるMIUIの仕様? とりあえず複数ユーザーで使用できるようになったので手順をメモする ただし、色々制限はかかっているの注意。詳細は下記参照 …

GitHub ActionsでビルドしたドキュメントをGitHub Pagesで表示する

まとめ GitHub Pagesは「GitHub Enterprise Cloud 」プランの場合privateで使用する事ができる 企業でお金払っていてオンプレのGitHubでなければこのプランのはず 追記: 有料プランでもTeamプランというのがありました。こちらではアクセス制御はできません …

PySparkではDataFrameのjoinでorderは維持されない

概要 PySparkのDataFrameではjoinした際にorderは維持されない 正確にはshuffleが行われる orderは出力直前に行うのが鉄則 再現コード from pyspark.sql import SparkSession spark = SparkSession.builder.getOrCreate() df1 = spark.createDataFrame( [ ['…

PySparkのDataFrameでは同名のカラムが許容される

概要 PySparkのDataFrameでは同名のカラムが許容される select などカラム名を指定する処理時に例外が発生する カラム名を再定義、別名を付ける事で回避が可能 再現コード 作成時にカラム名が重複 from pyspark.sql import SparkSession spark = SparkSessio…

fstringの中でdictionary、setの内包表記を使用する

結論 l = ['a', 'b', 'c'] s1 = f'{ {s:s for s in l} }' # 中括弧の後にスペースが必要 assert s1 == "{'a': 'a', 'b': 'b', 'c': 'c'}" s2 = f'{ {s for s in l} }' # 中括弧の後にスペースが必要 assert s2 == "{'b', 'c', 'a'}" ※setの方は順番は保証さ…

Pythonのユニットテストでimportされている変数を上書きする

結論 直接モジュールの変数を上書きすれば良い ただし、importされた時点でそのモジュールの変数として扱われる事に注意 ※文字で見ても良くわからないと思うので下記のコードを参照 ケース1(テスト対象に直接変数がimportされている場合) テスト対象のコー…

GitHub ActionsでLOCALEがja_JP.UTF-8のPostgreSQLを使用する方法

結論 サービスコンテナでLOCALEに ja_JP.UTF-8 を設定することはできない 自力でLOCALEを追加するイメージを作って、docker run で起動する Dockerfile FROM postgres:11.5 RUN localedef -i ja_JP -c -f UTF-8 -A /usr/share/locale/locale.alias ja_JP.UTF…

PostgreSQLのデフォルトLOCALEでは日本語文字列のソート結果が想定と異なる

概要 PostgreSQLをデフォルトのまま使用すると日本語文字列のソート結果が想定と異なる LOCALEを正しく設定することで修正可能 文字列の並び順は LC_COLLATE で制御されるこの設定がデフォルトだと en_US.utf8 となっていることが原因 動作確認環境 Docker P…

AtCoder用Python環境を作った

概要 最近AtCoderを始めたのでPython用の環境を作りました。 割といい感じにできた気がしましたのでTemplate Repositoryにしています。これから始める方、AtCoder上で書いている方などは是非試してみてください。 一方、まだ私自身が使い込んでいないので、…