管理人Kのひとりごと

デジモノレビューやプログラミングや写真など

pysparkでFitbitの歩数JSONをパースして週平均歩数(月〜日)を求めてみた

以下の記事にコメントがついており、週平均歩数はどうやって求めるのか?ということだったのでやってみた。

検証環境

# Dockerイメージで実行(rootユーザで実行するため、「--user 0」を付与)
# 参考:https://stackoverflow.com/questions/75560836/apach-spark-py-docker-image-error-could-not-install-packages-due-to-an-oserror
$ docker run --rm -it --user 0 apache/spark-py bash

root@7c8a9e54ac50:/opt/spark/bin# ./pyspark 
Python 3.10.6 (main, Mar 10 2023, 10:55:28) [GCC 11.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
24/07/14 14:31:30 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /__ / .__/\_,_/_/ /_/\_\   version 3.4.0
      /_/

Using Python version 3.10.6 (main, Mar 10 2023 10:55:28)
Spark context Web UI available at http://7c8a9e54ac50:4040
Spark context available as 'sc' (master = local[*], app id = local-1720967492989).
SparkSession available as 'spark'.

コード

週番号は、pyspark.sql.functions.weekofyearで取得しました。

A week is considered to start on a Monday and week 1 is the first week with more than 3 days, as defined by ISO 8601
ISO 8601では、週は月曜日から始まり、3日以上を含む最初の週が1週目と定義されています。
https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.weekofyear.htmlより



検証結果

期待通りの結果になりました。

# 2020年1週目の歩数(1週目は5日間)
+-------------------+-------+-----+
|           datetime|week_no|value|
+-------------------+-------+-----+
|2020-01-01 00:00:00|      1| 5179|
|2020-01-02 00:00:00|      1| 8387|
|2020-01-03 00:00:00|      1|18740|
|2020-01-04 00:00:00|      1| 7037|
|2020-01-05 00:00:00|      1| 5392|
+-------------------+-------+-----+
-> 平均:8947

# 集計結果
+-------+--------+
|week_no|avg_week|
+-------+--------+
|      1|  8947.0|
...

R06年度春季情報処理技術者試験(SM:ITサービスマネージャ)に合格できませんでした

掲題の通り、昨日発表があったR06年度春季情報処理技術者試験(SM:ITサービスマネージャ)に合格できませんでした...
受験時の手応え通り、午後2論文がB評価でした。もう少し書き始める前に構想を練ることができていればいけていたはず。

以上です。秋はシステム監査技術者かな、合格するぞ!

AWS Certified Data Engineer - Associate(DEA-01) 取得しました

掲題の通り、AWS認定 Data Engineer - Associate(DEA-01)を取得しました。これでまた全冠です。(AWS Summitに間に合っていれば、記念品がもらえたらしい、残念...)

  • スコア
  • 対策期間・時間
  • 対策に使った本など
    • 1.Cloud License
    • 2.Kindleの問題集
    • 3.AWS関連のWebサイト、Bing Chat、 Gemini
    • 4.公式模試(無料版)
  • 感想など
続きを読む

2024 Japan AWS All Certifications Engineersに選出されました

この度、APN Blogでも発表されましたが、「2024 Japan AWS All Certifications Engineers」に選出されました。

12冠時の記事

AWS Summitで記念品を受け取りました

AWS Summitにて記念品を配布するということで、AWS Summitへ行ってきました(初)


6/20午後に行きましたが大変な熱気で、こういったIT系イベントが初だった私は圧倒されました。

受け取った「2024 Japan AWS All Certifications Engineers」記念品は、ステッカーとバッジでした。

また、「認定者ラウンジ」では、水筒と取得済み認定のステッカーがもらえました。(「Data Engineer - Associate」は未取得)

やはり旬のAIに関する展示、講演が多かったですね。今年はAI系の新資格も提供開始されるようなので、来年も選出されるよう精進していきたいです。

Docker版awscliの出力をjqでパースしようとするとエラーが発生する(対処法あり)

Docker版awscliの出力(json)をjqでパースしようとしたところ、エラーが発生しました。

検証環境

hoge@fuga:~$ docker --version
Docker version 26.1.4, build 5650f9b
hoge@fuga:~$ aws --version
aws-cli/2.16.6 Python/3.11.8 Linux/6.6.25-01713-g2f237acc8e50 docker/x86_64.amzn.2
hoge@fuga:~$ jq --version
jq-1.6

エラー内容

suke@penguin:~$ aws iam list-users | jq '.Users[].UserName'
parse error: Invalid numeric literal at line 1, column 2

# 期待値
hoge@fuga:~$ aws iam list-users | jq '.Users[].UserName'
"user1"
"user2"
"user3"

原因及び対処法

原因

原因は、dockerコマンド実行時の't'オプションにより、実行結果に不要な文字が入っていたため。

docker run --rm -it public.ecr.aws/aws-cli/aws-cli command


# 't'オプションありの場合の出力結果
"\u001b[?1h\u001b=\r{\u001b[m\r"
                                "    \"Users\": [\u001b[m\r"
                                                            "        {\u001b[m\r"
                                                                                 "            \"Path\": \"/\",\u001b[m\r"

# 't'オプションなしの場合の出力結果
"{"
"    \"Users\": ["
"        {"
"            \"Path\": \"/\","

対処法

dockerコマンドから't'オプションを除く

docker run --rm -i public.ecr.aws/aws-cli/aws-cli command

参考にしました