2016-04-14 14 views
6

S3'da depolanan çok miktarda sunucu verisi var (yakında bir Parquet biçiminde olmak üzere). Verilerin bazı dönüşüme ihtiyacı vardır ve bu nedenle S3'ten gelen bir düz kopya olamaz. Verilere erişmek için Spark kullanacağım, ancak Spark ile manipüle etmek yerine, S3'e geri yazmak yerine bir adım atıp çek/dönüştürmek için bir sorgu çalıştırırsam Redshift'e kopyalayıp kopyalamayacağımı merak ediyorum. verileri ve sonra doğrudan Redshift'e kopyalayın?Doğrudan Parquet/S3'ten Redshift'e Spark SQL/Hive/Presto?

cevap

11

Tamamen mümkün.

Scala kod herhangi bir düşünce bu parkeye kıyasla ne kadar verimli üzerinde (here alınan) kırmızıya kayma

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

yazmaya (here alınan) parke

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

Scala kodunu okumak için - > csv -> S3 -> ifadesini reddeden S3'e çevir –

+0

@marcin_koss Bunu ölçmedim, ama genel olarak, daha az dönüşüm, daha iyi dönüşümler. S3 ile aynı zamanda, yazma/okuma verilerinin maliyetini de göz önünde bulundurmalısınız. – evgenii