【发布时间】:2020-07-16 17:36:50
【问题描述】:
我在 Scala 中有我的 Spark 项目我想使用 Redshift 作为我的数据仓库,我发现 spark-redshift repo 存在,但 Databricks 几年前将其设为私有,不再公开支持它。
目前处理 Amazon Redshift 和 Spark (Scala) 的最佳选择是什么
【问题讨论】:
标签: scala apache-spark amazon-redshift
我在 Scala 中有我的 Spark 项目我想使用 Redshift 作为我的数据仓库,我发现 spark-redshift repo 存在,但 Databricks 几年前将其设为私有,不再公开支持它。
目前处理 Amazon Redshift 和 Spark (Scala) 的最佳选择是什么
【问题讨论】:
标签: scala apache-spark amazon-redshift
这是部分答案,因为我只在实际用例中使用过 Spark->Redshift,并且从未对 Spark 读取 Redshift 性能进行基准测试。
在从 Spark 写入 Redshift 时,到目前为止,我能找到的最高效的方法是将 parquet 写入 S3,然后使用 Redshift Copy 加载数据。通过 JDBC 写入 Redshift 也可以,但它比前一种方法慢几个数量级。其他存储格式也可以尝试,但如果任何面向行的格式可以击败 Parquet,我会感到惊讶,因为 Redshift 在内部以列格式存储数据。 Spark 和 Redshift 都支持的另一种列格式是ORC。
我从未遇到过使用 Spark 从 Redshift 读取大量数据的用例,因为将所有数据加载到 Redshift 并将其用于连接和聚合感觉更自然。仅将 Redshift 用作大容量存储并使用另一个引擎进行连接和聚合可能并不划算。对于读取少量数据,JDBC 工作正常。对于大量读取,我的最佳猜测是Unload command 和 S3。
【讨论】: