繁体   English   中英

"Spark sql 查询与数据框函数"

[英]Spark sql queries vs dataframe functions

使用 Spark 执行良好的性能。 我想知道通过SQLContext使用 sql 查询是否更好,或者通过df.select()等 DataFrame 函数进行查询是否更好。

任何的想法? :)

没有任何性能差异。 两种方法都使用完全相同的执行引擎和内部数据结构。 归根结底,一切都归结为个人喜好。

  • 可以说DataFrame<\/code>查询更容易以编程方式构建并提供最小的类型安全性。

  • 普通的 SQL 查询可以更加简洁和易于理解。 它们也是可移植的,无需对每种支持的语言进行任何修改即可使用。 使用HiveContext<\/code> ,这些也可用于公开一些其他方式无法访问的功能(例如,没有 Spark 包装器的 UDF)。

通过使用 DataFrame,可以将 SQL 分解为多个语句\/查询,这有助于调试、轻松增强和代码维护。

将复杂的 SQL 查询分解为更简单的查询并将结果分配给 DF 会带来更好的理解。

通过将查询拆分为多个 DF,开发人员获得了使用缓存、修复(使用唯一\/接近唯一键在分区之间均匀分布数据)的优势。

唯一重要的是使用什么样的底层算法进行分组。 HashAggregation 会比 SortAggregation 更有效。 SortAggregation - 将对行进行排序,然后将匹配的行聚集在一起。 O(n*log n) HashAggregation 使用键作为分组列创建 HashMap,其余列作为 Map 中的值。 Spark SQL 尽可能使用 HashAggregation(如果值的数据是可变的)。 在)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM