我有hdfs集群上的(表格)数据,需要对其进行一些稍微复杂的查询。我预计未来会多次面对同样的情况,还有其他数据。所以,问题是:
在执行这样的任务时,在选择使用(纯)spark和sparksql的位置时需要考虑哪些因素?
以下是我能想到的选择因素:
对语言的熟悉程度:在我的例子中,我更像是一个数据分析师,而不是一个数据库Maven,因此这将引导我使用spark:我更愿意考虑如何(有效地)在java/scala中实现数据选择,而不是在sql中。但是,这主要取决于查询。
序列化:我认为可以运行sparksql查询,而无需将自制的jar+dep发送给spark worker(?)。但是,返回的数据是原始的,应该在本地进行转换。
效率:我不知道两者有什么不同。
我知道这个问题可能太笼统了,但也许不是。那么,有更多知识的人能提供一些见解吗?
1条答案
按热度按时间qcuzuvrc1#
关于第3点,根据您的输入格式,当您使用纯spark和sparksql时,扫描数据的方式可能会有所不同。例如,如果您的输入格式有多个列,但您只需要很少的列,那么可以跳过使用sparksql的检索,而在纯spark中实现这一点要复杂一些。
最重要的是sparksql有一个查询优化器,当使用dataframe或查询语句时,生成的查询将通过优化器,以便更有效地执行。
spark sql不排除spark;联合使用可能是最好的结果。