apache-spark - 在 U-SQL 和 Spark/Databricks 之间进行选择

标签 apache-spark apache-spark-sql azure-data-factory u-sql databricks

我拥有基于 Azure 数据工厂和 Azure Data Lake Analytics (U-SQL) 制定 ETL 解决方案的经验。

但微软似乎已经开始强制使用 Azure Databricks。

U-SQL 正在消亡吗?自 7 月份以来我就没有看到任何有关新功能的消息。

即将进行的项目非常简单。我们在 Azure Data Lake Storage 上存储了大约 0.5 Tb 的小型 JSON 文件。它们需要转变成平板并以某种方式连接起来。

所以我的问题是为新项目选择 ADF+U-SQL 还是 ADF+DataBricks?

最佳答案

Spark 的数据工程/转换编程模型从根本上来说比 U-SQL 更加灵活和可扩展。

对于小型、简单的项目,您不会注意到其中的差异,我建议您使用您熟悉的任何项目。对于复杂的项目和/或您预计需求会发生重大变化的项目,我强烈建议 Spark 使用受支持的语言之一:Scala、Java、Python 或 R,而不是 SparkSQL。推荐的原因是 Spark 的数据转换领域特定语言 (DSL) 相当于 SQL 代码生成,这是所有 BI/分析/仓储工具在幕后使用的管理复杂性的技巧,非常容易。它允许以处理 SQL 时不可能或不切实际的方式组织和管理逻辑/配置/定制,我们不应该忘记,SQL 是一种已有 40 多年历史的语言。

对于 Spark 可能实现的抽象级别的极端示例,您可能会喜欢 https://databricks.com/session/the-smart-data-warehouse-goal-based-data-production

如果您正在处理脏数据/不受信任的数据(在您的情况下为 JSON),并且希望拥有高度受控/自定义的摄取过程,我还会推荐 Spark。在这种情况下,您可能会受益于 spark-records 中的一些想法。用于防弹数据处理的库。 https://databricks.com/session/bulletproof-jobs-patterns-for-large-scale-spark-processing

在使用 Spark 时,尤其是对于新用户而言,Databricks 提供了最佳的托管环境。多年来,我们一直是管理 PB 级非常复杂数据的客户。我们团队中具有 SQL 背景且不是软件开发人员的人员在 Databricks 笔记本中使用 SparkSQL,但他们受益于数据工程和数据科学团队为他们创建的工具/抽象。

祝您的项目顺利!

关于apache-spark - 在 U-SQL 和 Spark/Databricks 之间进行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52897373/

相关文章:

apache-spark - 使用USING和PARTITIONED BY子句的spark hive create table的有效语法是什么?

python - PySpark 数据帧 : how to filter on multiple conditions with compact code?

scala - Spark 中 rtrim 函数的意外结果

azure-devops - Azure数据工厂: Deployment Failed: At least one resource deployment operation failed

azure - 数据工厂复制事件在源端遇到存储故障 - 未找到 AppendBlob

azure - 我们可以在 foreach 循环或其他迭代事件中传递管道变量吗

java - 阶段 0.0 (tid 0) java.lang.ArithmeticException 中的 Spark ERROR 执行程序 : Exception in task 0. 0

mongodb - 使用 ssl 从 spark 连接到 mongo docker

java - 将 JavaRDD 转换为 DataFrame 时出现 Spark 错误 : java. util.Arrays$ArrayList 不是 array<string> 架构的有效外部类型

python - 在 pyspark 中查找正则表达式?