面試題:Hive on Spark與SparkSql的區別
阿新 • • 發佈:2018-12-29
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來回答