如何将表从 redshift 导出为 Parquet 格式?
How do I export tables from redshift into Parquet format?
我能想到的几个选项
- Spark 使用 Redshift 连接器流回 s3
- 卸载到 Gzip 压缩的 S3,然后使用命令行工具处理
不确定哪个更好。我不清楚如何轻松地将 redshift 模式转换为 parquet 可以接受的东西,但也许 spark 连接器会为我解决这个问题。
获取 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)
我的相关博客post:http://garrens.com/blog/2017/04/09/connecting-apache-spark-to-external-data-sources/
在这种情况下,Spark 流应该无关紧要。
我还建议使用 databricks spark-redshift 包,以便更快地从 redshift 中卸载并加载到 spark 中。
不再需要 Spark。我们可以直接将 Redshift 数据以 Parquet 格式卸载到 S3。示例代码:
UNLOAD ('select-statement')
TO 's3://object-path/name-prefix'
FORMAT PARQUET
找到更多信息
我能想到的几个选项
- Spark 使用 Redshift 连接器流回 s3
- 卸载到 Gzip 压缩的 S3,然后使用命令行工具处理
不确定哪个更好。我不清楚如何轻松地将 redshift 模式转换为 parquet 可以接受的东西,但也许 spark 连接器会为我解决这个问题。
获取 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)
我的相关博客post:http://garrens.com/blog/2017/04/09/connecting-apache-spark-to-external-data-sources/
在这种情况下,Spark 流应该无关紧要。
我还建议使用 databricks spark-redshift 包,以便更快地从 redshift 中卸载并加载到 spark 中。
不再需要 Spark。我们可以直接将 Redshift 数据以 Parquet 格式卸载到 S3。示例代码:
UNLOAD ('select-statement')
TO 's3://object-path/name-prefix'
FORMAT PARQUET
找到更多信息