【问题标题】:Can you copy straight from Parquet/S3 to Redshift using Spark SQL/Hive/Presto?您可以使用 Spark SQL/Hive/Presto 直接从 Parquet/S3 复制到 Redshift 吗?
【发布时间】:2016-08-06 17:22:17
【问题描述】:

我们有大量的服务器数据存储在S3 中(即将采用Parquet 格式)。数据需要一些转换,因此它不能是 S3 的直接副本。我将使用Spark 访问数据,但我想知道是否不是用 Spark 操作它,而是写回 S3,然后复制到 Redshift,如果我可以跳过一个步骤并运行查询来拉/transform 数据,然后直接复制到 Redshift?

【问题讨论】:

    标签: hadoop amazon-s3 apache-spark apache-spark-sql


    【解决方案1】:

    当然,完全有可能。

    读取 parquet 的 Scala 代码(取自 here

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

    要写入 redshift 的 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()
    

    【讨论】:

    • 与 parquet -> csv -> S3 -> 从 S3 复制语句到 redshift 相比,有什么想法吗
    • @marcin_koss,我没有测量过,但一般来说,转换越少越好。使用 S3,您还必须记住从中写入/读取数据的可能成本。
    猜你喜欢
    • 2016-02-06
    • 2016-03-22
    • 1970-01-01
    • 1970-01-01
    • 2021-05-13
    • 2020-01-03
    • 1970-01-01
    • 2018-01-31
    • 1970-01-01
    相关资源
    最近更新 更多