1. 程式人生 > >通過spark-sql快速讀取hive中的資料

通過spark-sql快速讀取hive中的資料

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。