2023-01-01から1年間の記事一覧
手順 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 …
Maven でビルドしたアプリから DataStax の Cassandra ドライバーを使って Amazon Keyspaces に CQL を投げてみた。 手順 サーバーサイド(KeySpaces) テーブルを作成する マネコンから Amazon Keyspaces のトップページから [Getting started] をクリック…
検証結果 planning_time と compile_time は execution_time に含まれるぽい。 検証手順 とあるコンパイルに時間がかかるクエリを実行する。 SYS_QUERY_HISTORY を確認する。 execution_time、compile_time、planning_time を足すと elapsed_time を超えてし…
検証結果 queue_time は elapsed_time に含まれる 検証手順 手動WLMで Default queue の同時実行数を 1 に設定する。 Cloud-DWB-Derived-from-TPCH の 3TB のデータをロードする。 Cloud-DWB-Derived-from-TPCH の 3TB 用のクエリをシリアル実行する。 $ noh…
検証結果 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…
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 でも追加・削除されるという当たり前のことを検証してみたメモ。 カラム追加・削除 Redshift から Glue カタログを参照するため external schema を作成する。 create external schem…
Glue カタログの VACHAR 型はサイズパラメータ( VARCHAR (256) など)がないが、Redshift Spectrum からサイズパラメータなしで定義された VARCHAR 列をクエリすると、"Invalid column type" エラーが発生する。 Redshift Spectrum を使用して、AWS Glue デ…
Type ファイルのプリミティヴな型は最小限の種類に絞られている。 Types The types supported by the file format are intended to be as minimal as possible, with a focus on how the types effect on disk storage. For example, 16-bit ints are not ex…
parquet-tools は deprecated になっているらしく、parquet-cli をインストールして Parquet ファイルを読んでみた。 あと関連記事を調べると parquet-tools も紹介されていたりするけど,現時点では使えなくなっている $ brew install parquet-tools Error:…
S3 にある Parquet ファイルを Glue の Crawler でクロールしてテーブルを作成し、文字列型のカラムを数値型に変更するとエラーになるという当たりまり前(Parquet は項目定義に型を持っているバイナリファイルのため)のことを検証した。型を変えたい場合は…
事象 Spark on EMR で Glue カタログのデータベース名を表示しようとすると、"because no identity-based policy allows the glue:GetDatabase action" で AccessDeniedException が発生する。 $ pyspark >>> from pyspark.sql import SparkSession >>> spar…
事象 Spark SQL で Glue カタログのデータベース名("_"や"-"を含む)を指定すると、"Possibly unquoted identifier ... detected. Please consider quoting it with back-quotes as" と怒られる。 $ pyspark >>> from pyspark.sql import SparkSession >>> …
事象 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 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 で列のデフォルト値を指定する。 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…
まとめ TotalBackupStorageBilled(保持期限内の自動スナップショットの累積サイズ) + SnapshotStorageUsed(保持期限外の手動スナップショット) がクラスターのストレージ使用量(VolumeBytesUsed)を超える分が課金される。 例えば 現在のストレージ使用…
Amazon Redshift RA3 の手動スナップショットの料金について 自動スナップショットは、 無料、最大35日間保持できる。 デフォルトで8時間ごとか、1ノードあたり 5GB 変更されると自動でスナップショットが作成される。 自動、手動ともに前回からの増分のみス…
Read は MySQL が 16KB、PostgreSQL が 8KB、Write は MySQL、PostgreSQL とも 4KB。 Each database page is 16 KB in Aurora MySQL-Compatible Edition and 8 KB in Aurora PostgreSQL-Compatible Edition.Aurora was designed to eliminate unnecessary I/…
SQL elect b.database, substring(b.querytxt,1,30) sql, a.* from svl_query_metrics_summary a, stl_query b where a. query = b.query and b.querytxt like '%/* TPC-H Q%' order by substring(b.querytxt,1,30); 結果 database | sql | userid | query |…
Amazon Redshift はゾーンマップで 1MB ブロックの最小値と最大値を保持しているので、クエリのフィルタ条件などに合致しないブロックを読み飛ばすことができる。ソートキーでソートされていないと同じ値のデータがあちこちのブロックに散らばるため、ソート…
計測 EVEN分散 =# select count(l_orderkey) from lineitem join orders on o_orderkey = l_orderkey and l_shipdate > '1996-01-01'; count ------------ 7518747994 (1 row) Time: 150000.148 ms (02:30.000) クエリID取得 =# select pg_last_query_id(); …
svv_table_info.skew_rows (スライス単位での最大行数/最小行数)の値が大きいと偏っている。 =# select * from svv_table_info where "table" = 'lineitem_dk_shipdate1'; -[ RECORD 1 ]----------+--------------------------------- database | tpch_3tb…
%/はデータベース名 PostgreSQLのコマンドラインの動きを改善してみる | Yakst 例 ~/.psqlrc \set PROMPT1 '%[%033[1;32m%]%/ %n %`date '+%Y%m%d_%H:%M:%S'` %R%#%[%033[0m%] ' \set PROMPT2 '%[%033[1;32m%]%R%#%[%033[0m%] ' \timing on \set HISTSIZE 10…
Amazon Redshift で2列で内部結合しているクエリで、分散キーが2列のうち偏りのある列にした場合と偏りのない列にした場合の比較。 検証結果 偏りのある列(l_shipdate)が分散キー select sum(a.l_quantity), count(a.l_orderkey), min(a.l_shipdate), max(…
Amazon Redshift で結合キーに関数を使うとソートマージ結合にならないパターン。 検証結果 結合キーに collate 関数を使用 クライアントからみた実行時間は25分47秒。 select a.l_linenumber, avg(a.l_quantity) from lineitem a, lineitem b where collate…
ソートマージ結合になる条件 両テーブルの結合キーが分散キーとソートキーに指定されている 結合対象表の未ソート率が20%未満 Merge Join Typically the fastest join, a merge join is used for inner joins and outer joins. The merge join is not used f…
前提 Cloud Data Warehouse Benchmark Derived from TPC-H のテーブル・データを使用 環境: ue-east-1 に Amazon Redshift クラスター(ra3.4xlarge x 4 node)を作成 計測結果 効率的なソートキー 実行時間(クライアント側): 2.8 秒 =# select min(l_ship…
Amazon Redshift で Cloud Data Warehouse Benchmark Derived from TPC-H を実行してみる。 ue-east-1 に Amazon Redshift クラスターを作成する ra3.4xlarge x 4 node Cloud Data Warehouse Benchmark Derived from TPC-H の 100GB のデータセットをロード…
SVL_QUERY_METRICS は STL_QUERY_METRICS を参照しており、STL_QUERY_METRICS は1 秒未満で実行されるクエリセグメントは記録されない場合があるためと思われる。 STL_QUERY_METRICS Contains metrics information, such as the number of rows processed, C…