毎秒約 1000 メッセージのレートでライブ クリックストリーム データを取得し、それを Amazon Redshift に書き込むことを目的とした概念実証アプリを作成しています。
他の人が主張するパフォーマンスのようなものを得るのに苦労しています(たとえば、ここ)。
2 x dw.hs1.xlarge ノード (+ リーダー) を持つクラスターを実行しています。負荷を実行しているマシンは、64 ビット Ubuntu 12.04.1 を実行している Redshift クラスターと同じ VPC 上の EC2 m1.xlarge インスタンスです。
私は Java 1.7 (Ubuntu リポジトリの openjdk-7-jdk) と Postgresql 9.2-1002 ドライバーを使用しています (主に、ビルドを容易にする Maven Central で唯一のドライバーであるためです!)。
最後のテクニックを除いて、ここに示されているすべてのテクニックを試しました。
COPY FROM
「リアルタイム」でデータをロードしたいので使用できません。そのため、S3 または DynamoDB を介してステージングすることは実際にはオプションではなく、Redshift はCOPY FROM stdin
何らかの理由でサポートしていません。
これはログからの抜粋で、個々の行が約 15/秒の速度で挿入されていることを示しています。
2013-05-10 15:05:06,937 [pool-1-thread-2] INFO uk.co...redshift.DatabaseWriter - Beginning batch of 170
2013-05-10 15:05:18,707 [pool-1-thread-2] INFO uk.co...redshift.DatabaseWriter - Done
2013-05-10 15:05:18,708 [pool-1-thread-2] INFO uk.co...redshift.DatabaseWriter - Beginning batch of 712
2013-05-10 15:06:03,078 [pool-1-thread-2] INFO uk.co...redshift.DatabaseWriter - Done
2013-05-10 15:06:03,078 [pool-1-thread-2] INFO uk.co...redshift.DatabaseWriter - Beginning batch of 167
2013-05-10 15:06:14,381 [pool-1-thread-2] INFO uk.co...redshift.DatabaseWriter - Done
私は何を間違っていますか?他にどのようなアプローチを取ることができますか?