【问题标题】:How do I export tables from redshift into Parquet format?如何将表从 redshift 导出为 Parquet 格式?
【发布时间】:2017-11-20 06:13:45
【问题描述】:

我能想到的几个选项

  • 使用 Redshift 连接器将 Spark 流式传输回 s3
  • UNLOAD 压缩到 S3 中,然后使用命令行工具进行处理

不确定哪个更好。我不清楚如何轻松地将红移模式转换为镶木地板可以吸收的东西,但也许火花连接器会为我解决这个问题。

【问题讨论】:

  • 为什么要从 redshift 流式传输?导出通常是批处理操作

标签: apache-spark amazon-redshift parquet


【解决方案1】:

不再需要 Spark。我们可以直接将 Redshift 数据以 Parquet 格式卸载到 S3。示例代码:

UNLOAD ('select-statement')
TO 's3://object-path/name-prefix'
FORMAT PARQUET

您可以在UNLOAD - Amazon Redshift找到更多信息

【讨论】:

    【解决方案2】:

    获取 Redshift JDBC jar 并使用 sparkSession.read.jdbc 和我的示例中这样的 redshift 连接详细信息:

    val properties = new java.util.Properties() 
    properties.put("driver", "com.amazon.redshift.jdbc42.Driver") 
    properties.put("url", "jdbc:redshift://redshift-host:5439/") 
    properties.put("user", "<username>") properties.put("password",spark.conf.get("spark.jdbc.password", "<default_pass>")) 
    val d_rs = spark.read.jdbc(properties.get("url").toString, "data_table", properties)
    

    我的相关博文:http://garrens.com/blog/2017/04/09/connecting-apache-spark-to-external-data-sources/

    在这种情况下,Spark 流应该是无关紧要的。

    我还建议使用 databricks spark-redshift 包来使从 redshift 中批量卸载并更快地加载到 spark 中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-07
      • 2018-07-18
      • 2018-08-14
      • 2017-10-17
      • 2021-06-02
      • 2018-04-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多