首页 文章

Spark sql查询与数据帧功能

提问于
浏览
9

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

任何的想法? :)

3 回答

  • 18

    没有任何性能差异 . 两种方法都使用完全相同的执行引擎和内部数据结构 . 在一天结束时,所有归结为个人喜好 .

    • 可以说 DataFrame 查询更容易以编程方式构造并提供最小类型安全性 .

    • 简单的SQL查询可以更简洁,更容易理解 . 还有便携式,可以使用所有支持的语言而无需任何修改 . 使用 HiveContext ,这些也可用于公开某些功能,这些功能在其他方面是不可访问的(例如,没有Spark包装器的UDF) .

  • 3

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

    将复杂的SQL查询分解为更简单的查询并将结果分配给DF可以更好地理解 .

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

  • 2

    理想情况下,Spark的催化剂应该优化对同一执行计划的两次调用,并且性能应该相同 . 如何打电话只是你的风格问题 . 实际上,Hortonworks(https://community.hortonworks.com/articles/42027/rdd-vs-dataframe-vs-sparksql.html)的报告存在差异,当您需要GROUPED记录及其记录名称为SORT DESCENDING的总COUNTS时,SQL优于Dataframes .

相关问题