私は、RedshiftからアンロードしたAmazon S3上で、私たちの赤方偏移ノード上のスペースをクリアするために、パイプで区切られた非分割データをテキストファイルとして持っています。このデータにアクセスするためにAthenaにテーブルを作成しましたが、パフォーマンスのためにデータを最適化したいと考えています。私はAWS EMRを使用して私のデータを寄木細工のフォーマットに変換しようとしていて、それらを寄木細工のフォーマットされたファイルとしてs3バケットに保管しています。私はAWSのウェブサイトの指示に従おうとしましたが、指示がちょっと混乱しています。テキストを寄木細工に変換する
答えて
あなたが変換しようとしているデータや実行しているエラーについての具体的な情報がないと、あなたにとって最も役立つものを正確にゼロにすることは難しいです。しかし、うまくいけば私の経験から、次のヒントが役立ちます:
1.図生アウトデータ外観そう は、あなたが変換されたデータは、Amazon S3のバケットに格納され、通常は別々に格納された各個別のテーブルに各フォルダは、そのデータの内容を圧縮されたテキストファイルに分割する。フォーマットを理解することは、次のステップで正しいHiveコマンドを書く上で非常に重要です。
2.書き込み寄せ木変換DDLスクリプト 寄せ木変換プロセスにおける重要な要素は、ハイブベースのDDL(データ定義言語)である(データタイプを含む)テーブルのスキーマを記述したスクリプト、およびポイントに入力データが格納され、出力データがどこに格納されるかを指定します。通常、生データのインフラストラクチャを記述する "ddl"ファイルがデータと一緒に提供されるか、スキーマがどこかで記述されます。ここで
ADD JAR /usr/lib/hive-hcatalog/share/hcatalog/hive-hcatalog-core-1.0.0-amzn-5.jar;
CREATE EXTERNAL TABLE offer (
offer_sid VARCHAR(36),
created TIMESTAMP,
offer_id VARCHAR(100),
offer_position VARCHAR(100),
page_position VARCHAR(100),
vertical VARCHAR(100),
partner VARCHAR(100),
card_name VARCHAR(255))
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
LOCATION 's3://yourdata/raw/table' ;
CREATE EXTERNAL TABLE parquet_hive (
offer_sid VARCHAR(36),
created TIMESTAMP,
offer_id VARCHAR(100),
offer_position VARCHAR(100),
page_position VARCHAR(100),
vertical VARCHAR(100),
partner VARCHAR(100),
card_name VARCHAR(255))
STORED AS PARQUET
LOCATION 's3://yourdata/parquet/table/';
INSERT OVERWRITE TABLE parquet_hive SELECT * FROM offer;
は、最初の行は今後の文の解釈に使用するハイブのバージョンを示します。ここでは例として、特定のスキーマとS3バケット「フォルダ」の寄木変換DDLスクリプトがあります。ここで選択したHiveのバージョンでは、data typesがサポートされているかどうかが決まることに注意することが非常に重要です。 Amazonで提供されている別のHive versionsを見るにはここをクリックしてください。
次の行のブロックは、DDLステートメントで指定されたテーブルを作成します。生データの位置は「LOCATION」で示され、より重要なことに、(1)で決定されたデータのフォーマットは「ROW FORMAT」で示される。ここで、SerDe(シリアライザ/デシリアライザ)インターフェイスOpenCSVSerdeは、二重引用符で格納された行のデータ値をうまく処理します。デフォルトでは、OpenCSVSerdeは二重引用符を引用符文字として使用し、カンマは区切り文字として使用します。すべての生データフォーマットがこのSerDeインタフェースを必要とするわけではないことに注意してください。二重引用符は特殊なケースです。
最後の行のブロックは、Parquetファイルが出力される出力場所である最後のParquetテーブルのスキーマ(「STORED AS PARQUET」と表示されます)を定義し、最初のテーブルのデータでテーブルを書き込みます。
3.テーブル固有の寄せ木変換スクリプトを書いていたら、別のフォルダ(S3のに適切なS3バケットにアップロードし、EMRクラスタ 上寄木スクリプトを実行する:書き込み - と// yourdata/parquet_scriptsこの例ではparquet-table.q)。このスクリプトは、HiveをインストールしたEMRクラスター上で実行されます。あなたのS3バケットのdeails、pemkey名およびAWS CLIプロファイルを供給するとともに
aws emr create-cluster --enable-debugging --log-uri s3://yourdata/parquetLogs --applications Name=Hadoop Name=Hive Name=HCatalog --ec2-attributes KeyName=your_pemkey,InstanceProfile=EMR_EC2_DefaultRole,SubnetId=subnet-888777ff --service-role EMR_DefaultRole --release-label emr-5.3.0 --instance-type m4.xlarge --instance-count 1 --steps Type=HIVE,Name="Convert offer to Parquet",ActionOnFailure=CONTINUE,ActionOnFailure=TERMINATE_CLUSTER,Args=[-f,s3://yourdata/parquet_scripts/write-parquet-table.q,-hiveconf,INPUT=s3://yourdata/raw/table/,-hiveconf,OUTPUT=s3://yourdata/parquet/table,-hiveconf,REGION=us-east-1] --region us-east-1 --auto-terminate --profile your_profile
、あなたは以下となります。ここではAWS CLI(コマンドラインインターフェイス)を使用してスクリプトを実行するEMRクラスタを起動するコマンドの例ですSubnetId = subnet-888777ffを有効なサブネットに変更する必要があります。今のところ、AWSダッシュボードで使用可能なVPCサブネットを特定し、上記のコマンドのサブネット-888777ffをそのIDに置き換えます。
この特定のコマンドは、m4.xlarge EC2インスタンス上で実行されているEMRクラスタをスピンアップし、デバッグログをs3:// yourdata/parquetLogsに書き込み、寄木細工変換スクリプト "write-parquet-table.q"を実行し、 AWS CLIクレデンシャルプロファイル "your_profile"。生データの量と使用するインスタンスのサイズに応じて、寄木細工の変換プロセスを完了するのにかかる時間はかなり異なります。スクリプトが終了すると、EMRクラスタは終了し、ParquetフォーマットのデータはAmazon Athenaなどのインターフェイスにインポートできる状態になります。