2016-04-14 3 views
6

S3(すぐにParquet形式になる)に格納されている膨大な量のサーバーデータがあります。データには何らかの変換が必要なため、S3からのストレートコピーではありません。私はSparkを使ってデータにアクセスしますが、Sparkで操作するのではなく、S3に書き戻してから、Redshiftにコピーすると、ステップをスキップして、プル/変換するクエリを実行できるかどうか疑問に思っていますそのデータをレッドシフトに直接コピーしますか?Spark SQL/Hive/Prestoを使用してParquet/S3からRedshiftにまっすぐにコピーできますか?

答えて

11

確かに、完全に可能です。

hereから取られた)寄木細工を読むためのScalaのコード(hereから取られた)赤方偏移に書き込むための

val people: RDD[Person] = ... 
people.write.parquet("people.parquet") 
val parquetFile = sqlContext.read.parquet("people.parquet") //data frame 

Scalaのコード

parquetFile.write 
.format("com.databricks.spark.redshift") 
.option("url", "jdbc:redshift://redshifthost:5439/database?user=username&password=pass") 
.option("dbtable", "my_table_copy") 
.option("tempdir", "s3n://path/for/temp/data") 
.mode("error") 
.save() 
+0

これは寄木細工と比較してどのように効率的に任意の考え - > csv - > S3 - > S3から赤方偏移にステートメントをコピーする –

+0

@ marcin_koss、私はそれを測定していませんが、一般的に言えば、変形が少ないほど良いです。 S3では、データの書き込み/読み取りのコストを念頭に置く必要があります。 – evgenii

関連する問題