将 Spark 连接器用于 AWS 上的 Databricks 和 Snowflake

问题描述

我正在考虑同时使用 Databricks 和 SNowflake,它们由 Spark 连接器连接,都在 AWS 上运行。在做出决定之前,我很难理解以下几点:

  1. Spark 连接器的性能如何? (性能、额外成本、兼容性)
  2. Databricks sql 和 SNowflake sql性能和标准方面有哪些比较?
  3. 尝试同时使用两者有哪些“问题”或令人遗憾的意外?

解决方法

Snowflake 对 Spark 连接器的性能进行了投资,根据基准测试[0],它表现良好。

SQL 方言是相似的。 “Databricks SQL 保持与 Apache Spark SQL 语义的兼容性。” [1] “Snowflake 支持 SQL:1999 中定义的大多数命令和语句。” [2]

我没有遇到过陷阱。我会避免使用不同的区域。 DataBricks SQL 的性能特征自 6/17 起将其 Photon 引擎设为默认值以来就不同了。

与往常一样,该实用程序将取决于您的用例,例如:

  • 如果您在分区压缩 Parquet DeltaLake 上执行分析性 DataBricks SQL 查询,那么性能应该与 Snowflake 大致相似——但如果您对 JDBC MySQL 连接执行分析性 DataBricks SQL 查询,则 Snowflake 的性能应该非常高更好。
  • 如果您在 DataBricks SQL 中进行宽表扫描样式查询(例如 select * from foo(无位置,无限制)),然后在内核(或其他)中进行分析,则切换到 Snowflake 不会为你做很多事情。

[0] - https://www.snowflake.com/blog/snowflake-connector-for-spark-version-2-6-turbocharges-reads-with-apache-arrow/

[1] - https://docs.databricks.com/sql/release-notes/index.html

[2] - https://docs.snowflake.com/en/sql-reference/intro-summary-sql.html

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...