ablog

不器用で落着きのない技術者のメモ

Redshift の UNLOAD で1ファイルにまとめて出力する

AWS

UNLOAD コマンドで PARALLEL OFF オプションをつけると1ファイルにまとめて出力することができる。 unload ('select * from stl_query') to 's3://redshift-unload/stl_query_' iam_role 'arn:aws:iam::123456789012:role/redshift-spectrum-s3-fullaccess' …

Glueジョブのブックマーク

AWS

Amazon S3 入力ソースの場合、AWS Glue ジョブのブックマークではオブジェクトの最終更新日時を確認して、どのオブジェクトを再処理する必要があるのかを確認します。入力ソースデータが最後のジョブ実行以降に変更されている場合、ジョブを再度実行すると、…

Oracle Database の待機イベントの歴史

Oracle Database の待機イベントは version 7.0 (1991-1992年頃)で初めて実装された。元々は開発チームがベンチマークでボトルネックを特定するために実装されたものだった。 Juan Loaiza によると、Mark Porter も関わっていて、主に Keshevan Srinivasan…

Oracle Database の SQL トレースの歴史

Oracle Database の SQL トレースは最初は version 5(1986年リリース) で開発者のデバッグのために実装されました。version 5 では undocumented で not supported な機能でしたが、version 6 から documented でユーザーが使える機能になりました。 以下…

1つの Lambda 関数に いくつの SQS から Lambda トリガーとして設定できるか

AWS

1つの Lambda 関数にいくつの SQS から Lambda トリガーとして設定できるか。特に意味はない。 for i in {1..1000} do sqs_url=`aws sqs create-queue --queue-name LambdaQueue$(printf "%03d" ${i}) | jq -r '@text "\(.QueueUrl)"'` sqs_arn=`aws sqs get…

検証のため S3 バケットへの Put を禁止したバケットポリシー

AWS

検証のため S3 バケットへの Put を禁止したバケットポリシーのサンプル。 { "Version": "2012-10-17", "Statement": [ { "Sid": "deny-put", "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::aurora-postgres-…

ファイルを並行で圧縮する

8並行で圧縮する例。 find . -name '*.csv' -print0|xargs -0 -n1 -P 8 gzip & 32並行で解凍する例。 find . -name '*.gz' -print0|xargs -0 -n1 -P 32 gunzip &

split コマンドでファイルを分割する

split コマンドでファイルを分割したときのメモ。 コマンド -n: 分割数 -d: サフィックスを数字にする -a: サフィックスの桁数を指定する(2桁だと100ファイルまでしか分割できないため) --additional-suffix: 末尾にサフィックスを追加 log_10min.tsv: 分…

はてなブログのタイトルとURLをスクレイピングする Python スクリプト

はてなブログの記事一覧をスクリピングしてからタイトルと URL を TSV に出力する Python スクリプト。 pyquery をインストール $ pip install pyquery yoheia/hatena_scraper.py at master · yoheia/yoheia · GitHub import sys from pyquery import PyQuer…

Amazon SageMaker 機械学習エンジニア向け体験ハンズオンを試してみた

AWS

AWS Hands On Amazon SageMaker On Demand | AWS を試してみた。

.gitignoreで .DS_Store を削除する

git

gti で .DS_Store を無視するよう設定する $ vi ~/.gitignore_global .DS_Store $ git config --global core.excludesfile ~/.gitignore_global GitHub の .DS_Store を削除する $ git rm -r --cached . $ git add . $ git commit -m "create .gitignore" $ …

vsftpd で ftp サーバを立てる手順

vsftpd で ftp サーバを立てる手順。 vsftpd をインストール・起動・自動起動設定 $ sudo yum -y install vsftpd $ sudo adduser ftpuser $ sudo passwd ftpuser $ sudo systemctl start vsftpd $ sudo chkconfig vsftpd on ftp クライアントをインストール …

VSCode から Github に連携する

VSCode から変更したファイルを Github に push した手順。 GitHub から clone したディレクトリを VSCode で開く git アイコンをクリック。 変更したファイルの「+」をクリックしてステージング。 コメントを入力して、「✔︎」をクリックしてコミット。 「…

VSCode の Remote - SSH で EC2 上のファイルをリモート編集する

VSCode の Remote - SSH 拡張機能をインストールして、VSCode から EC2 上のファイルを直接編集できるようにした手順。 インストール VSCode を起動する 左メニューの [Extensions] をクリックし、"remote" で検索し、Remote SSH を選択。 [Install] をクリ…

QuickSight で S3 のデータを参照しようとすると「マニフェストファイルを有効な JSON として解析することはできません。」と怒られる

AWS

事象 QuickSight で [新しい分析]-[新しいデータセット] で S3 のデータを参照しようとすると「マニフェストファイルを有効な JSON として解析することはできません。」と怒られる 原因 ファイルが BOM付き UTF8 になっていたため。 $ file test.json test.j…

Amazon QuickSight で S3 のデータを可視化

AWS

Amazon QuickSight で S3 のデータを可視化してみた。 データの準備 住所データCSV【住所.jp】 から csv_zenkoku.zip をダウンロードする。 解凍して、UTF8 に変換する(macOS)。 $ brew install nkf $ unzip csv_26kyouto.zip $ nkf -Lw zenkoku.csv > zen…

Glue ジョブでのサイズの大きい gzip ファイルの解凍について

AWS

メモ What could be the problem? The first thing I looked at was whether the compression type for the data was the problem. GZip is a non splittable compression type, so it is likely the excess time is from uncompression of the data. (中略…

Aurora Postgres->KDS->KFH->S3 に出力したログを復号して CSV に変換する Python スクリプト

AWS

Amazon Linux 2 にパッケージをインストール sudo yum -y install gcc sudo yum -y install python-devel Python のモジュールをインストール pip install boto3 pip install aws-encryption-sdk pip install pycrypto pip install dataclasses pip install …

Spark関連情報メモ

Spark 2.4.3 pyspark.sql module

pyspark.sql module の select で DataFrame に複数カラムを連結したカラムを追加する

pyspark.sql module の select、concat、col で DataFrame に複数カラムを連結したカラムを追加する。.alias("...") で連結したカラムに別名をつけている。 from pyspark.sql.functions import concat, col, lit df = df.select(col("col1"), col("col2"), c…

pyspark.sql module の select で DataFrame の全カラムを取得する

pyspark.sql module の select で DataFrame の全カラムを取得する。 df = df.select([column for column in df.columns]) 参考 drop_list = ['a column', 'another column', ...] df.select([column for column in df.columns if column not in drop_list])…

Lambda の同時実行数を1 にして並行実行してみる

AWS

AWS マネジメントコンソールで同時実行数を 1 に設定する。 並行で実行する for i in {1..100} do aws lambda invoke --function-name testLambdaFunction output_${i}.txt 2>&1 & done; TooManyRequestsException が発生し、4 回リトライして実行できない場…

macOS で Docker のログを見る

$ docker run -it --privileged --pid=host debian nsenter -t 1 -m -u -n -i sh # cd /var/lib/docker/containers/ /var/lib/docker/containers # ls -l total 8 drwx------ 4 root root 4096 Jun 28 16:48 3449e97b9cc9c4b7afed594d23392e0261ca63cf803eed…

Glue でクロールすると "Service: Amazon S3; Status Code: 403 Error Code AccessDenied" と怒られる

AWS

事象 AWS Glue Crawler でクロールすると "Error Access Denied (Service: Amazon S3; Status Code: 403; Error Code AccessDenied; Request ID: ..." と怒られる。 IAMポリシー、KMS キーポリシー、S3 バケットポリシーでは必要な権限は付与されている。 [8…

Docker で Apache Spark UI から Glue のジョブ結果を確認する

AWS

Docker で Apache Spark History Server を起動し、Spark Web UI を表示したメモ。 macOS on Macbook Pro で Spark UI を使ってみた。 Docker をインストール・設定 Docker を Mac にインストールする - ablog Amazon Linux 2 に docker をインストールする …

Amazon Linux 2 に docker をインストールする

AWS

Amazon Linux 2 に docker をインストールしたメモ。 docker をインストール sudo yum install -y docker sudo usermod -a -G docker ec2-user 起動 sudo /bin/systemctl start docker.service 自動起動設定 sudo systemctl enable docker 参考 Amazon Linux…

MySQL で performance_schema を有効化する

performance_schema=1 参考 MySQL :: MySQL 5.6 リファレンスマニュアル :: 22.2.2 パフォーマンススキーマ起動構成 パフォーマンスインサイトの有効化 - Amazon Relational Database Service

Amazon SageMaker の Jupyter Notebook のコードを Github で管理する

AWS

Github リポジトリを作成する SageMaker で Github リポジトリを登録する(以下、マネコンでの操作) [Amazon SageMaker]-[ノートブック]-[Git リポジトリ]-[リポジトリの追加] どのタイプのリポジトリを追加しますか?: GitHub または他の Git ベースのリポ…

Amazon QuickSight から Athena にクエリすると "Access Denied"

AWS

事象 以下のエラーメッセージが表示される。 [Simba][AthenaJDBC](100071) An error has been thrown from the AWS Athena client. Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: C39A664B8E41665A; S3 Exte…

Athena でクエリすると "Zero records returned." と言われる

AWS

事象 データが空でないのに、Athena で問合せると "Zero records returned." と言われる。 原因 クローラ設定で対象をファイルに指定している 解決策 クローラがファイルではなくバケットかプレフィックスまでを指すようにする。 参考 空の結果を返す Amazon…