6
我們有大量的服務器數據存儲在S3
(即將以Parquet
格式)。數據需要一些轉換,所以它不能是S3的直接拷貝。我將使用Spark
來訪問數據,但我想知道是不是用Spark來操作它,寫回到S3,然後複製到Redshift,如果我可以跳過一個步驟並運行查詢來拉/變換數據,然後直接複製到Redshift?您可以使用Spark SQL/Hive/Presto從Parquet/S3直接複製到Redshift嗎?
我們有大量的服務器數據存儲在S3
(即將以Parquet
格式)。數據需要一些轉換,所以它不能是S3的直接拷貝。我將使用Spark
來訪問數據,但我想知道是不是用Spark來操作它,寫回到S3,然後複製到Redshift,如果我可以跳過一個步驟並運行查詢來拉/變換數據,然後直接複製到Redshift?您可以使用Spark SQL/Hive/Presto從Parquet/S3直接複製到Redshift嗎?
當然,完全有可能。
Scala代碼讀取鑲木地板(從here拍攝)
val people: RDD[Person] = ...
people.write.parquet("people.parquet")
val parquetFile = sqlContext.read.parquet("people.parquet") //data frame
Scala代碼寫入到紅移(從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()
如何高效,這是相較於實木複合地板有什麼想法 - > csv - > S3 - >複製陳述S3 –
@marcin_koss,我還沒有測量過,但一般來說,轉換越少越好。有了S3,你還必須記住寫入/讀取數據的可能成本。 – evgenii