ablog

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

AWS

Amazon Linux 2023 に JDK 8 をインストールする

AWS

インストールする $ sudo yum install java-1.8.0-amazon-corretto-devel 使用する JDK を切り替える $ sudo alternatives --config java There are 2 programs which provide 'java'. Selection Command ----------------------------------------------- *…

Amazon Linux 2023 に YCSB をインストールして実行する

AWS

インストール Maven Amazon Linux 2023 に Maven をインストールする - ablog YCSB $ git clone https://github.com/brianfrankcooper/YCSB.git $ cd YCSB/ $ mvn clean package Python 2.7 Amazon Linux 2023 に Python 2.7 をインストールする - ablog テ…

Amazon Linux 2023 に OpenJDK をインストールする

AWS

$ sudo yum install java-17-amazon-corretto-devel $ java --version openjdk 17.0.8.1 2023-08-22 LTS OpenJDK Runtime Environment Corretto-17.0.8.8.1 (build 17.0.8.1+8-LTS) OpenJDK 64-Bit Server VM Corretto-17.0.8.8.1 (build 17.0.8.1+8-LTS, mi…

cqlsh から Amazon KeySpaces に接続する(Sigv4 認証版)

AWS

Amazon Linux 2023 に cqlsh をインストールして、Sigv4 認証で Amazon KeySpaces に接続して CQL を発行する手順。 インストール pyenv Amazon Linux 2023 に pyenv をインストールする - ablog pip Amazon Linux 2023 に pip をインストールする - ablog c…

Amazon Linux 2023 に pip をインストールする

AWS

$ sudo yum -y install python-pip 関連 Amazon Linux 2 に pip をインストールする - ablog

Amazon Linux 2023 に pyenv をインストールする

AWS

パッケージをインストール $ sudo yum -y install git \ bzip2 \ bzip2-devel \ gcc \ git \ libffi-devel \ make \ openssl \ openssl-devel \ readline \ readline-devel \ sqlite \ sqlite-devel \ zlib-devel \ xz-devel pyenv をインストール $ curl -L…

YCSB で Amazon KeySpaces に負荷をかける

./bin/ycsb load cassandra-cql -p hosts=cassandra.ap-northeast-1.amazonaws.com -p port=9142 -P ./workloads/workloada -s -threads 2 -p recordcount=100 -p cassandra.writeconsistencylevel=LOCAL_QUORUM -p cassandra.ssl=true-jvm-args=" -Djavax.n…

Amazon KeySpaces の Batch の制約

AWS

Amazon Keyspaces supports unlogged batch commands with up to 30 commands in the batch. Only unconditional INSERT, UPDATE, or DELETE commands are permitted in a batch. Logged batches are not supported. Functional differences: Amazon Keyspac…

Amazon KeySpaces でテーブルのキャパシティ超過を確認するメトリクス

AWS

Amazon KeySpaces で テーブルのプロビジョンドキャパシティを超える読込/書込が発生しているかは CloudWatch メトリクスの ReadThrottleEvents / WriteThrottleEvents で確認することができる。 Metric Description ReadThrottleEvents Requests to Amazon …

Amazon KeySpaces のパーティションキー

AWS

パーティション — 指定されたパーティションのトラフィックが 3,000 RCU または 1,000 WCU を超えると、キャパシティ不足イベントが発生する可能性があります。ベストプラクティスとして、パーティション間でトラフィックを均一に分散させることをお勧めしま…

UNPIVOT を CROSS JOIN に書き換えるケース

UNPIVOT で性能要件を満たさない場合に「項目テーブル作成 & CROSS JOIN+WITH句」へ書き換えたケース。 書換前 書換後 参考 [Redshift] テーブルの縦持ちと横持ちを入れ換える方法 | DevelopersIO [新機能] RedshiftのPIVOT/UNPIVOT機能を試してみた | Devel…

Amazon KeySpaces の性能(スループット)とリトライ制御などについてのメモ

AWS

On Demand モードならピークの倍まで瞬時にスケールアウト Peak traffic and scaling properties Amazon Keyspaces tables that use on-demand capacity mode automatically adapt to your application’s traffic volume. On-demand capacity mode instantly…

amazon-keyspaces-java-driver-helpers を使ってみる

AWS

必要なファイルを取得 $ git clone https://github.com/aws-samples/amazon-keyspaces-java-driver-helpers.git リージョンを ap-norhtaset-1 に書換え $ find . -type f -regex '.*\.\(conf\|java\).*' -print0|xargs -0 perl -i.org -pe 's/us-east-[0-9]/…

DataStax Java Driver を使って Amazon KeySpaces にアクセスする場合のリトライポリシーの設定方法

Java アプリから DataStax Java Driver を使って Amazon KeySpaces にアクセスする場合のリトライポリシーの設定方法 Retry Policies The DataStax java driver will attempt to retry idempotent request transparently to the application. If you are see…

Java アプリから Amazon KeySpaces に insert すると"Consistency level LOCAL_ONE is not supported for this operation. Supported consistency levels are: LOCAL_QUORUM" エラー

AWS

事象 DataStax の Java ドライバを使って、Java アプリケーションから Amazon KeySpaces に insert すると、"Consistency level LOCAL_ONE is not supported for this operation. Supported consistency levels are: LOCAL_QUORUM" エラーになる。 src/main/…

RHEL8.6 に Kinesis Agent をインストールする

環境 環境は RHEL 8.6(AMI ID: ami-064d2a8f528240c59) $ cat /etc/system-release Red Hat Enterprise Linux release 8.6 (Ootpa) $ uname -a Linux ip-172-17-3-155.ap-northeast-1.compute.internal 4.18.0-372.9.1.el8.x86_64 #1 SMP Fri Apr 15 22:12…

EMR で s3-dist-cp が見つからない

AWS

事象 アプリケーションバンドル "Spark" で作成したEMRクラスター(6.10.0)で s3-dist-cp が見つからない。 [hadoop@ip-10-5-143-241 ~]$ s3-dist-cp -bash: s3-dist-cp: command not found 原因 Hadoop がインストールされてないため。 解決策 アプリケー…

Amazon Linux 2023 に Maven をインストールする

AWS

$ sudo wget https://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo $ sudo sed -i s/\$releasever/6/g /etc/yum.repos.d/epel-apache-maven.repo $ sudo yum install -y apache-mav…

Amazon Linux 2023 に JDK 11 をインストールする

AWS

手順 Amazon Linux のリリースとカーネルバージョンの確認 $ uname -a Linux ip-172-17-1-142.ap-northeast-1.compute.internal 6.1.34-58.102.amzn2023.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Jun 27 21:38:12 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux $ cat …

Amazon Keyspaces を使ってみる

AWS

Maven でビルドしたアプリから DataStax の Cassandra ドライバーを使って Amazon Keyspaces に CQL を投げてみた。 手順 サーバーサイド(KeySpaces) テーブルを作成する マネコンから Amazon Keyspaces のトップページから [Getting started] をクリック…

Amazon Redshift の SYS_QUERY_HISTORY の planning_time と compile_time は execution_time に含まれるぽい

検証結果 planning_time と compile_time は execution_time に含まれるぽい。 検証手順 とあるコンパイルに時間がかかるクエリを実行する。 SYS_QUERY_HISTORY を確認する。 execution_time、compile_time、planning_time を足すと elapsed_time を超えてし…

Amazon Redshift の SYS_QUERY_HISTORY の elapsed_time は lock_wait_time を含む

検証結果 elapsed_time = end_time - start_time lock_wait_time は elapsed_time に含まれる 検証手順 テーブルを作成して、行を挿入 CREATE TABLE testtab1(id int primary key, name varchar(32)); INSERT INTO testtab1 (id, name) VALUES(1, 'foo'); IN…

Glue PySpark で Parquet ファイルの型を変換する

import sys from awsglue.transforms import * from awsglue.utils import getResolvedOptions from pyspark.context import SparkContext from awsglue.context import GlueContext from awsglue.job import Job args = getResolvedOptions(sys.argv, ["JOB…

Glue カタログでテーブルのカラムを追加・削除すると、Redshift Spectrum でも追加・削除される

Glue カタログでテーブルのカラムを追加・削除すると、Redshift Spectrum でも追加・削除されるという当たり前のことを検証してみたメモ。 カラム追加・削除 Redshift から Glue カタログを参照するため external schema を作成する。 create external schem…

Parquet はファイルでカラムの型を持っているため、Glue カタログだけ変更しても型を変えることはできない

S3 にある Parquet ファイルを Glue の Crawler でクロールしてテーブルを作成し、文字列型のカラムを数値型に変更するとエラーになるという当たりまり前(Parquet は項目定義に型を持っているバイナリファイルのため)のことを検証した。型を変えたい場合は…

Spark on EMR から Glue カタログにアクセスできない

事象 Spark on EMR で Glue カタログのデータベース名を表示しようとすると、"because no identity-based policy allows the glue:GetDatabase action" で AccessDeniedException が発生する。 $ pyspark >>> from pyspark.sql import SparkSession >>> spar…

クロスアカウントの s3 cp で "An error occurred (AccessDenied) when calling the GetObjectTagging operation: Access Denied"

AWS

事象 AWS CLI v2 でクロスアカウントでaws s3 cp を実行すると "An error occurred (AccessDenied) when calling the GetObjectTagging operation" で失敗する。 AWS CLI は v2 % aws --version aws-cli/2.5.8 Python/3.9.11 Darwin/21.6.0 exe/x86_64 promp…

AWS

* AWS Open Data の New York City Taxi のデータを自アカウントの S3 バケットにコピーする。 S3 バケット作成 $ aws s3 mb s3://nyc-tlc-az/ --region us-east-1 ファイルコピー $ aws s3 cp --recursive "s3://nyc-tlc/trip data/" "s3://nyc-tlc-az/trip…

Amazon Redshift でテーブルの列のデフォルト値を指定する

AWS

Amazon Redshift で列のデフォルト値を指定する。 dev awsuser 20230517_17:43:39 =# create table test_default_col( name varchar(10), updated timestamp DEFAULT sysdate ); CREATE TABLE Time: 632.178 ms dev awsuser 20230517_17:43:55 =# insert int…

Amazon Redshift RA3 の手動スナップショットのコストについて

AWS

Amazon Redshift RA3 の手動スナップショットの料金について 自動スナップショットは、 無料、最大35日間保持できる。 デフォルトで8時間ごとか、1ノードあたり 5GB 変更されると自動でスナップショットが作成される。 自動、手動ともに前回からの増分のみス…