2016-04-14 13 views
6

Chúng tôi có một lượng lớn dữ liệu máy chủ được lưu trữ trong S3 (sắp có định dạng Parquet). Các dữ liệu cần một số chuyển đổi, và do đó, nó không thể là một bản sao thẳng từ S3. Tôi sẽ sử dụng Spark để truy cập dữ liệu, nhưng tôi tự hỏi nếu thay vì thao tác với Spark, viết ngược lại S3, rồi sao chép sang Redshift nếu tôi chỉ có thể bỏ qua một bước và chạy truy vấn để kéo/chuyển đổi dữ liệu và sau đó sao chép trực tiếp sang Redshift?Bạn có thể sao chép thẳng từ Parquet/S3 sang Redshift bằng Spark SQL/Hive/Presto không?

Trả lời

11

Điều chắc chắn, hoàn toàn có thể.

Scala mã để đọc gỗ (lấy từ here)

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

đang Scala để viết thư cho dịch chuyển đỏ (lấy từ here)

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

Bất kỳ suy nghĩ về hiệu quả như thế nào đây là so với gỗ parquet - > csv -> S3 -> sao chép câu lệnh sang redshift từ S3 –

+0

@marcin_koss, tôi chưa đo được điều đó, nhưng nói chung, càng ít biến đổi thì càng tốt. Với S3 bạn cũng phải ghi nhớ chi phí ghi/đọc dữ liệu từ nó. – evgenii

Các vấn đề liên quan