Phi*_*los 16 sql performance dataframe apache-spark apache-spark-sql
使用Spark执行良好的性能.我想知道使用sql查询SQLContext是否合适,或者如果通过DataFrame函数进行查询更好df.select().
任何的想法?:)
zer*_*323 21
没有任何性能差异.两种方法都使用完全相同的执行引擎和内部数据结构.在一天结束时,所有归结为个人喜好.
可以说,DataFrame查询更容易以编程方式构造并提供最小类型安全性.
纯SQL查询可以更简洁,更容易理解.还有便携式,可以使用所有支持的语言而无需任何修改.使用HiveContext这些也可以用于公开某些功能,这些功能在其他方面是不可访问的(例如,没有Spark包装器的UDF).
理想情况下,Spark 的催化剂应该优化对同一执行计划的两次调用,并且性能应该相同。如何打电话只是你的风格问题。实际上,与 Hortonworks ( https://community.hortonworks.com/articles/42027/rdd-vs-dataframe-vs-sparksql.html )的报告相应地存在差异,其中 SQL 优于 Dataframes需要按记录名称排序降序的总计数的分组记录。
小智 5
通过使用 DataFrame,我们可以将 SQL 分解为多个语句/查询,这有助于调试、轻松增强和代码维护。
将复杂的 SQL 查询分解为更简单的查询并将结果分配给 DF 可带来更好的理解。
通过将查询拆分为多个 DF,开发人员可以获得使用缓存、修复(使用唯一/接近唯一键在分区之间均匀分布数据)的优势。