1.1 データを取り込んで保存する
タスクステートメント
データを取り込んで保存する
対象知識
データ形式と取り込みメカニズム
- 検証済みフォーマットと未検証のフォーマット
- Apache Parquet: 列指向のデータストレージ形式
- JSON: JavaScript Object Notation
- CSV: Comma-Separated Values
- Apache ORC: Optimized Row Columnar
- Apache Avro: データシリアライゼーションシステム
- RecordIO: AWS SageMaker で使用されるバイナリ形式
AWS の主要なデータソース
- Amazon S3: オブジェクトストレージ
- Amazon EFS: Elastic File System(共有ファイルシステム)
- Amazon FSx for NetApp ONTAP: マネージドストレージ
ストリーミングデータソース
- Amazon Kinesis: リアルタイムストリーミングデータの収集と処理
- Kinesis Data Streams
- Kinesis Data Firehose
- Kinesis Video Streams
- Apache Flink: ストリーム処理フレームワーク
- Amazon Managed Service for Apache Flink
- Apache Kafka: 分散ストリーミングプラットフォーム
- Amazon MSK (Managed Streaming for Apache Kafka)
AWS のストレージオプション
各ストレージのユースケースとトレードオフを理解する:
- Amazon S3: スケーラブルなオブジェクトストレージ
- ストレージクラス(Standard, IA, Glacier等)
- Amazon EBS: ブロックストレージ(EC2インスタンス用)
- Amazon EFS: 共有ファイルシステム
- Amazon RDS: リレーショナルデータベース
- Amazon DynamoDB: NoSQLデータベース
対象スキル
1. ストレージからのデータ抽出
関連する AWS のサービスオプションを使用する:
- Amazon S3 Transfer Acceleration: 高速転送
- Amazon EBS プロビジョンド IOPS: 高性能I/O
- その他のストレージサービス(S3, EBS, EFS, RDS, DynamoDB)
2. データ形式の選択
データアクセスパターンに基づいて適切なデータ形式を選択:
- Parquet: 列指向、分析クエリに最適
- JSON: 柔軟なスキーマ、API連携
- CSV: シンプル、互換性が高い
- ORC: Hiveクエリに最適化
3. SageMaker へのデータ取り込み
- Amazon SageMaker Data Wrangler: データ準備ツール
- SageMaker Feature Store: 特徴量の保存と管理
4. 複数ソースからのデータマージ
以下の方法でデータを統合:
- プログラミング手法(Python, Scala等)
- AWS Glue: ETLサービス
- Apache Spark: 分散データ処理
5. トラブルシューティングとデバッグ
容量とスケーラビリティに関係するデータ取り込みとストレージの問題:
- パフォーマンスボトルネックの特定
- スケーリング制限の解決
- データ転送の最適化
6. ストレージに関する初期考慮事項の決定
以下に基づいて判断:
- コスト: ストレージクラス、データ転送料金
- パフォーマンス: レイテンシー、スループット
- データ構造: 構造化、半構造化、非構造化
重要なポイント
データ形式の選択基準
| 形式 | 用途 | メリット | デメリット |
|——|——|———-|————|
| Parquet | 分析、列指向クエリ | 圧縮率が高い、クエリが高速 | 書き込みが遅い |
| JSON | API連携、柔軟なスキーマ | 人間が読める、柔軟 | サイズが大きい |
| CSV | シンプルなデータ、互換性 | シンプル、広く対応 | スキーマ情報なし |
| RecordIO | SageMakerトレーニング | トレーニングに最適化 | 汎用性が低い |
ストレージの選択基準
- S3: 大量の非構造化データ、長期保存
- EBS: 高IOPS必要、EC2インスタンス用
- EFS: 複数インスタンスで共有ファイルシステム必要
- RDS: リレーショナルデータ、ACID準拠
- DynamoDB: NoSQL、低レイテンシー、スケーラビリティ
実践例
S3からデータを読み込む
import boto3
import pandas as pd
s3 = boto3.client('s3')
obj = s3.get_object(Bucket='my-bucket', Key='data.csv')
df = pd.read_csv(obj['Body'])
Parquet形式で保存
df.to_parquet('s3://my-bucket/data.parquet',
engine='pyarrow',
compression='snappy')
関連リンク
- [[1.2_データ変換と特徴量エンジニアリング]]
- [[1.3_データ完全性とモデリング準備]]
- [[99_AWSサービス一覧]]
- [[00_試験概要]]