山pの楽しいお勉強生活

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

python

setuptoolsがsetup.cfgを読んでくれない

現象 Pythonでsetuptoolsを使用してwheelファイルを作成しようとしたが、自動的に読んでくれるはずの「setup.cfg」を読んでくれない。 ※setup.pyで「setup(name='hoge')」などと指定すると正しく動作する ※正確には、license_fileなどで存在しないファイルを…

Windowsでpyenv(pyenv-win)

pyenvを使おうと思って公式見たらpyenv-win使えと書いてあった。 If you're on Windows, consider using @kirankotari's pyenv-win fork. (pyenv does not work on windows outside the Windows Subsystem for Linux) 使い方も含めてメモ pyenvとは Pythonの…

databricksでcreate tableを行った際にParquet does not support timestamp. See HIVE-6384が発生する

エラー詳細 stacktraceは長いので割愛 com.databricks.backend.common.rpc.DatabricksExceptions$SQLExecutionException: org.apache.spark.sql.AnalysisException: org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.UnsupportedOperationExcep…

PySparkで日付毎にデータを蓄積する際のdf.write.modeについて

概要 PySparkでpartitionByで日付毎に分けてデータを保存している場合、どのように追記していけば良いのか。 先にまとめ appendの方がメリットは多いが、チェック忘れると重複登録されるデメリットが怖い。 とはいえ、overwriteも他のデータ消えるデメリット…

PySparkで特定のカラムが全体の最大値であるレコードを取得する

概要 実現はできてはいたものの、もっと良いやり方ないかな?と聞いたら教えてもらったのでメモ。 うまく説明できないのでデータを記載します。 処理前 +----+------+ |name| date| +----+------+ | a|201906| | a|201907| | b|201906| | b|201907| | c|2019…

Databricksでは日本語は使用しない方が良い

概要 Databricksでファイル名、フォルダ名、引数では日本語を使用できない場合があるので、使用しない方が良い。 詳細 今時当たり前だが、Databricksでは普通に日本語を使用可能。 ファイル名やフォルダ名でもnotebbook単体で普通に使う分には問題ない。 だ…

PySparkでjsonカラムを縦持ちに変換する

正確には文字列でjsonが入っている時にパースして縦持ちにする方法。 また使いそうだが、すぐ忘れそうなのでメモ データ 元データ +---+--------------------------------------------------------------+ |id |json | +---+-------------------------------…

PySparkでread時に型が変わる

概要 PySparkで保存前はstringで、読み込むとintegerにカラムの型が変わっている現象に遭遇した。 原因としてはpartitionByで指定したカラムの型は自動的に推測されるため。 パーティションのカラムのデータタイプは自動的に推測されることに注意してくださ…

Pythonでjsonを読み込み、出力する際にdateやdatetime型を使用する

出力の時の話はよく記載がありましたが、読み込みの際に変換する方法はあまりなかったのでメモ。 概要 jsonでは日付型というのは定義されていません。(そもそもどう表現する?) そのため、pythonでjsonを読み込みの際に日付が含まれていても文字列になりま…

VSCodeで静的コード解析ツールPylintを使用する

はじめに PythonではPEP8というコード規約が一般的に使用されているようです。(PEP 8 -- Style Guide for Python Code) この規約に準拠したツールがいくつかあり、これ!っというものは特にないという印象です。 で、代表的なものとして、同名のpep8がある…

WSLでgoogle-images-downloadを使用する

概要 WindowsのWSL上でgoogle-images-downloadを使用して、画像を集める 用語 WSL Windows Subsystem for Linux Windows上でLinux動かすやつ google-images-download Google画像検索を使用して画像を取得してくれる。 Seleniumを使用してスクレイピングで取…