在使用spark从hbase获取和操作数据时, *Spark sql join* 与 *spark dataframe join* -哪一个更快?
*Spark sql join*
*spark dataframe join*
x759pob21#
我没有访问集群的权限来进行适当的测试,但我认为sparksql只会编译成本机Dataframe代码。我听说的经验法则是,sql代码应该用于产品代码的探索和Dataframe操作。
slwdgvem2#
rdd总是优于dataframe和sparksql,但根据我的经验,dataframe的性能比sparksql好。与spark sql相比,dataframe函数的性能更好。下面的链接将对此给出一些见解。spark rdds vs dataframes vs sparksql
vm0i2vca3#
sparksql带来了一个强大的新优化框架catalyst。使用catalyst,spark可以自动转换sql查询,以便它们更高效地执行。Dataframe是组织成命名列的数据集。它在概念上相当于关系数据库中的一个表或r/python中的一个Dataframe,但具有更丰富的优化,它提供了RDD(强类型、使用强大lambda函数的能力)的优点和spark sql优化的执行引擎的优点。执行速度将是相同的,因为它们使用相同的优化算法。
yhuiod9q4#
如果连接可以在查询之间共享,那么使用rdd仔细实现连接可能是一个不错的选择。但是,如果不是这样的话,就让spark/catalyst完成它的工作,并在sparksql中连接。它将完成所有的优化。这样就不必维护连接逻辑等。
zpf6vheq5#
据我所知,他们的表现应该是一样的。sql在内部将作为Dataframe工作
lb3vh1jj6#
sparksql连接和sparkdataframe连接几乎是一样的。连接实际上是在引擎盖下委托给rdd操作的。在rdd操作的基础上,我们还提供了sparksql、Dataframe或数据集等方便的方法。在sparksql的情况下,它需要花费很少的额外时间来解析sql。应该更多地根据良好的编程实践来评估它。我喜欢dataset,因为编译时可以捕捉语法错误。场景后面的编码负责压缩数据和执行查询。
r6hnlfcb7#
我用spark对cassandra上的sql和dataframe做了一些性能分析,我认为hbase也会这样。据我所知,sql比dataframe方法工作得更快。这背后的原因可能是在dataframe方法中涉及了很多java对象。在sql方法中,一切都是在内存中完成的。附加结果。
7条答案
按热度按时间x759pob21#
我没有访问集群的权限来进行适当的测试,但我认为sparksql只会编译成本机Dataframe代码。
我听说的经验法则是,sql代码应该用于产品代码的探索和Dataframe操作。
slwdgvem2#
rdd总是优于dataframe和sparksql,但根据我的经验,dataframe的性能比sparksql好。与spark sql相比,dataframe函数的性能更好。下面的链接将对此给出一些见解。
spark rdds vs dataframes vs sparksql
vm0i2vca3#
sparksql带来了一个强大的新优化框架catalyst。使用catalyst,spark可以自动转换sql查询,以便它们更高效地执行。
Dataframe是组织成命名列的数据集。它在概念上相当于关系数据库中的一个表或r/python中的一个Dataframe,但具有更丰富的优化,它提供了RDD(强类型、使用强大lambda函数的能力)的优点和spark sql优化的执行引擎的优点。
执行速度将是相同的,因为它们使用相同的优化算法。
yhuiod9q4#
如果连接可以在查询之间共享,那么使用rdd仔细实现连接可能是一个不错的选择。但是,如果不是这样的话,就让spark/catalyst完成它的工作,并在sparksql中连接。它将完成所有的优化。这样就不必维护连接逻辑等。
zpf6vheq5#
据我所知,他们的表现应该是一样的。sql在内部将作为Dataframe工作
lb3vh1jj6#
sparksql连接和sparkdataframe连接几乎是一样的。连接实际上是在引擎盖下委托给rdd操作的。在rdd操作的基础上,我们还提供了sparksql、Dataframe或数据集等方便的方法。在sparksql的情况下,它需要花费很少的额外时间来解析sql。
应该更多地根据良好的编程实践来评估它。我喜欢dataset,因为编译时可以捕捉语法错误。场景后面的编码负责压缩数据和执行查询。
r6hnlfcb7#
我用spark对cassandra上的sql和dataframe做了一些性能分析,我认为hbase也会这样。
据我所知,sql比dataframe方法工作得更快。这背后的原因可能是在dataframe方法中涉及了很多java对象。在sql方法中,一切都是在内存中完成的。
附加结果。