面试题:Hive on Spark与SparkSql的区别

Hive on Spark与SparkSql的区别

hive on spark大体与SparkSQL结构类似,只是SQL引擎不同,但是计算引擎都是spark!

核心代码

#初始化Spark SQL
#导入Spark SQL
from pyspark.sql import HiveContext,Row
# 当不能引入Hive依赖时
# from pyspark.sql import SQLContext,Row
# 注意,上面那一点才是关键的,他两来自于同一个包,你们区别能有多大


hiveCtx = HiveContext(sc)   #创建SQL上下文环境
input = hiveCtx.jsonFile(inputFile)   #基本查询示例
input.registerTempTable("tweets")   #注册输入的SchemaRDD(SchemaRDD在Spark 1.3版本后已经改为DataFrame)
#依据retweetCount(转发计数)选出推文
topTweets = hiveCtx.sql("SELECT text,retweetCount FROM tweets ORDER BY retweetCount LIMIT 10")

结构上Hive On Spark和SparkSQL都是一个翻译层,把一个SQL翻译成分布式可执行的Spark程序。而且大家的引擎都是spark
Hive和SparkSQL都不负责计算,它们只是告诉Spark,你需要这样算那样算,但是本身并不直接参与计算。
SparkSql官网:https://spark.apache.org/sql/
hive官网:http://hive.apache.org/index.html

面试会经常问的几个问题

1,spark需要hadoop么
可以不需要
2,spark能够代替hadoop么
不能,spark是用于计算的,hadoop可以计算和存储
3,spark需要hive么
可以不需要,只要metastore服务就行
4,spark on hive这种说法
这种说法是很不专业的,回答用上面的hive on spark和spark sql来回答

猜你喜欢

转载自blog.csdn.net/qq_43688472/article/details/85330810