我需要在我们的服务器上部署大数据集群。但我只知道Apache Spark的知识。现在我需要知道Spark SQL是否可以完全取代Apache Impala或Apache Hive。
我需要你的帮助。谢谢。
我想用实时场景解释一下
实时生产项目:
如果组织每天都在增加数据并且他们使用RDBMS数据进行查询,那么Hive主要用于存储数据/表并运行即席查询,然后他们可以使用HIVE。
Impala用于商业智能项目,其中报告通过一些前端工具完成,如tableau,pentaho等。
而Spark主要用于分析目的,开发人员更倾向于使用统计数据,因为他们也可以使用R launguage和spark来制作初始数据帧。
所以回答你的问题是“NO”火花不会取代蜂巢或黑斑羚。因为这三个都有自己的用例和好处,这些查询引擎也很容易实现,这取决于你的hadoop集群设置。
以下是一些有助于您更清楚地了解的链接:
http://db-engines.com/en/system/Hive%3BImpala%3BSpark+SQL
https://www.dezyre.com/article/impala-vs-hive-difference-between-sql-on-hadoop-components/180
Apache Spark是一种快速通用的大数据处理引擎,内置模块用于流媒体,SQL,机器学习和图形处理。
Impala - Apache Hadoop的开源,分布式SQL查询引擎。
Hive - 一种类似SQL的接口,用于查询存储在与Hadoop集成的各种数据库和文件系统中的数据。
参考:Differences between Hive and impala
Apache Spark具有到各种数据源的连接器,它可以处理数据。 Hive提供了一个查询引擎,可以在与Spark集成时帮助更快地查询Spark。
SparkSQL可以使用HiveMetastore来获取存储在HDFS中的数据的元数据。此元数据使SparkSQL能够更好地优化其执行的查询。 Spark是查询处理器。
这是个好问题。我认为不会。尽管Spark比其他两个更快,但它们中的每一个都有自己的目的和工作方式。例如,对于那些熟悉Query语言的人来说,Hive和Impala将是他们可以使用的,而Spark可以使用Hive Metastore来进行更好的优化。所以,我认为它不会被替代。
Apache Impala提供对数据的低延迟访问,通常用于前端商业智能应用程序。
Apache Hive更适合于不考虑查询延迟的批处理。例如基于日终属性的金融应用程序的数据处理(如业务结束时的股票价值)
虽然Apache Spark具有从Streaming到Machine Learning的各种应用程序,但它也用于批量ETL处理。 Spark 2+中提供的增强的基于数据集的Spark SQL API以Catalyst Query Optimizer和WholeStageCodeGen的形式改进了组件。我观察到一些Hive脚本从HiveQL转换为Spark上的Scala,执行时间缩短了50-90%。
从HiveQL迁移到基于数据集的Spark API的一些挑战: