Spark sql查询与数据帧函数
使用Spark执行良好的性能。我想知道通过Spark sql查询与数据帧函数,sql,performance,apache-spark,dataframe,apache-spark-sql,Sql,Performance,Apache Spark,Dataframe,Apache Spark Sql,使用Spark执行良好的性能。我想知道通过SQLContext使用sql查询是否好,或者通过数据帧函数(如df.select())进行查询是否更好 有什么想法吗?:) 没有任何性能差异。这两种方法使用完全相同的执行引擎和内部数据结构。归根结底,一切都归结为个人喜好 可以说,DataFrame查询更容易以编程方式构造,并提供最小的类型安全性 普通SQL查询可以更简洁、更容易理解。它们也是可移植的,并且可以在没有任何修改的情况下使用每种支持的语言。使用HiveContext,这些还可用于公开某些功
SQLContext
使用sql查询是否好,或者通过数据帧函数(如df.select()
)进行查询是否更好
有什么想法吗?:) 没有任何性能差异。这两种方法使用完全相同的执行引擎和内部数据结构。归根结底,一切都归结为个人喜好
- 可以说,
查询更容易以编程方式构造,并提供最小的类型安全性DataFrame
- 普通SQL查询可以更简洁、更容易理解。它们也是可移植的,并且可以在没有任何修改的情况下使用每种支持的语言。使用
,这些还可用于公开某些功能,这些功能可能以其他方式无法访问(例如,没有Spark包装器的UDF)HiveContext
- 可以说,
查询更容易以编程方式构造,并提供最小的类型安全性DataFrame
- 普通SQL查询可以更简洁、更容易理解。它们也是可移植的,并且可以在没有任何修改的情况下使用每种支持的语言。使用
,这些还可用于公开某些功能,这些功能可能以其他方式无法访问(例如,没有Spark包装器的UDF)HiveContext
- 没有任何性能差异。这两种方法使用完全相同的执行引擎和内部数据结构。归根结底,一切都归结为个人喜好
- 理想情况下,Spark的Catalyster应该优化对同一执行计划的两个调用,并且性能应该相同。如何打电话只是你的风格问题。
事实上,与Hortonworks()的报告有所不同,在这种情况下,当您需要按记录名降序排列的分组记录时,SQL的性能优于数据帧。理想情况下,Spark的催化剂应该优化对同一执行计划的两个调用,并且性能应该相同。如何打电话只是你的风格问题。
事实上,与Hortonworks()的报告有所不同,在这种情况下,当您需要按记录名降序排列的分组记录时,SQL的性能优于数据帧。通过使用数据帧,可以将SQL分解为多个语句/查询,这有助于调试,易于增强和代码维护 将复杂的SQL查询分解为更简单的查询并将结果分配给DF可以更好地理解
通过将查询拆分为多个DFs,开发人员可以利用缓存、修复(使用unique/close-to-unique键在分区之间均匀分布数据)的优势。通过使用DataFrame,可以将SQL拆分为多个语句/查询,这有助于调试、轻松增强和代码维护 将复杂的SQL查询分解为更简单的查询并将结果分配给DF可以更好地理解
通过将查询拆分为多个DFs,开发人员获得了使用缓存、修复(使用unique/close-to-unique键在分区之间均匀分布数据)的优势。唯一重要的是使用何种底层算法进行分组。 哈希聚合将比排序聚合更有效。SortAggregation-将对行进行排序,然后收集匹配的行。O(n*logn) HashAggregation使用键作为分组列创建一个HashMap,其余列作为映射中的值。
Spark SQL尽可能使用HashAggregation(如果值的数据是可变的)。O(n)唯一重要的是使用哪种底层算法进行分组。 哈希聚合将比排序聚合更有效。SortAggregation-将对行进行排序,然后收集匹配的行。O(n*logn) HashAggregation使用键作为分组列创建一个HashMap,其余列作为映射中的值。
Spark SQL尽可能使用HashAggregation(如果值的数据是可变的)。O(n)如果问题是关于SQL order by vs Spark orderBy method,您的答案是否相同?谢谢。如果问题是关于SQL order by vs Spark orderBy method,您的答案也一样吗?谢谢。当我们使用spark sql查询时,我们可以在中间级别缓存数据吗??因为在使用dataframe API时,我们可以通过将查询拆分为多个部分来轻松实现。当我们使用spark sql查询时,我们可以在中间级别缓存数据吗??因为在使用dataframe API时,我们可以通过将查询拆分为多个部分来轻松实现。在使用spark sql query时,我们可以在中间级别缓存数据吗??因为在使用dataframe API时,我们可以通过将查询拆分为多个部分来轻松实现。在使用spark sql query时,我们可以在中间级别缓存数据吗??因为在使用DataFrameAPI时,我们可以通过将查询拆分为多个部分来轻松实现这一点。