1. 程式人生 > >面試題:Hive on Spark與SparkSql的區別

面試題: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來回答