山pの楽しいお勉強生活

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

PySpark

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で指定したカラムの型は自動的に推測されるため。 パーティションのカラムのデータタイプは自動的に推測されることに注意してくださ…