通過spark-sql快速讀取hive中的資料
阿新 • • 發佈:2018-12-12
1 配置並啟動
1.1 建立並配置hive-site.xml
在執行Spark SQL CLI中需要使用到Hive Metastore,故需要在Spark中新增其uris。具體方法是將HIVE_CONF/hive-site.xml複製到SPARK_CONF目錄下,然後在該配置檔案中,新增hive.metastore.uris屬性,具體如下:
<configuration> <property> <name>hive.metastore.uris</name> <value>thrift://hadoop1:9083</value> <description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description> </property> </configuration>
1.2 啟動Hive
在使用Spark SQL CLI之前需要啟動Hive Metastore(如果資料存放在HDFS檔案系統,還需要啟動Hadoop的HDFS),使用如下命令可以使Hive Metastore啟動後執行在後臺,可以通過jobs查詢:
$nohup hive --service metastore > metastore.log 2>&1 &
1.3 啟動Spark叢集和Spark SQL CLI
通過如下命令啟動Spark叢集和Spark SQL CLI:
$cd /app/hadoop/spark-1.1.0 $sbin/start-all.sh $bin/spark-sql --master spark://hadoop1:7077 --executor-memory 1g
在叢集監控頁面可以看到啟動了SparkSQL應用程式:
這時就可以使用HQL語句對Hive資料進行查詢,另外可以使用COMMAND,如使用set進行設定引數:預設情況下,SparkSQL Shuffle的時候是200個partition,可以使用如下命令修改該引數:
SET spark.sql.shuffle.partitions=20;
運行同一個查詢語句,引數改變後,Task(partition)的數量就由200變成了20。