Apache spark 要使用哪个查询来获得更好的性能,是加入SQL还是使用Dataset API?

Apache spark 要使用哪个查询来获得更好的性能,是加入SQL还是使用Dataset API?,apache-spark,apache-spark-sql,hbase,Apache Spark,Apache Spark Sql,Hbase,在使用spark从HBASE获取和操作数据时,*spark sql join*vs*spark dataframe join*-哪一个更快?我使用spark对Cassandra上的sql vs dataframe做了一些性能分析,我认为对于HBASE也是如此 据我所知,sql比dataframe方法工作得更快。这背后的原因可能是在dataframe方法中涉及了很多java对象。在sql方法中,所有操作都在内存中完成 附加结果 我没有访问集群的权限来进行正确的测试,但我认为Spark SQL只会编

在使用spark从HBASE获取和操作数据时,
*spark sql join*
vs
*spark dataframe join*
-哪一个更快?

我使用spark对Cassandra上的sql vs dataframe做了一些性能分析,我认为对于HBASE也是如此

据我所知,sql比dataframe方法工作得更快。这背后的原因可能是在dataframe方法中涉及了很多java对象。在sql方法中,所有操作都在内存中完成

附加结果


我没有访问集群的权限来进行正确的测试,但我认为Spark SQL只会编译成本机数据帧代码


我听说的经验法则是,SQL代码应该用于探索和生产代码的数据帧操作。

据我所知,它们在性能方面应该表现相同。SQL在内部将像DataFrame一样工作,Spark SQL带来了一个强大的新优化框架,称为Catalyst。使用Catalyst,Spark可以自动转换SQL查询,以便它们执行得更高效

DataFrame是组织为命名列的数据集。它在概念上等同于关系数据库中的表或R/Python中的数据帧,但具有更丰富的优化,它提供了RDD(强类型、使用强大lambda函数的能力)的优点和Spark SQL优化的执行引擎的优点


执行速度将是相同的,因为它们使用相同的优化算法。

RDD总是优于Dataframe和SparkSQL,但根据我的经验,Dataframe的性能比SparkSQL好。与spark sql相比,Dataframe函数的性能很好。下面的链接将对此提供一些见解


如果连接可以在查询之间共享,那么仔细实现与RDD的连接可能是一个不错的选择。但是,如果不是这样,让spark/catalyst完成它的工作,并在spark sql中加入。它将完成所有的优化。因此,您不必维护连接逻辑等。

Spark SQL连接和Spark Dataframe连接几乎是一样的。连接实际上被委托给后台的RDD操作。除了RDD操作之外,我们还提供了一些方便的方法,如spark sql、数据帧或数据集。对于spark sql,它需要花费少量额外的时间来解析sql


应该更多地根据良好的编程实践对其进行评估。我喜欢dataset,因为您可以在编译时捕获语法错误。后台编码负责压缩数据和执行查询。

数据帧不是rdd@54l3d它们都是相互叠加的。最后,无论采用何种方法,您的执行计划都将作为DAG从RDD中提取出来。SQL是一个更抽象的定义,它描述了您希望对多个可能的执行计划执行的操作。选择一个多么好的计划是您的SQL引擎的秘诀。谁能更好地生成合适的RDD,人还是机器?您发布的链接涉及Spark 1.6。现在,在Spark 2.0中,SparkSQL利用了整个阶段的代码生成,将查询速度提高了10倍。因此,您提供的数据和您陈述的内容现在已经过时。您能否使用
explain
编辑您的问题并添加相应的查询计划?这将有助于回答你的问题。谢谢我完全不相信这一点。