SparkSQL是指整合了Hive的spark-sql cli, 本質上就是經過Hive訪問HBase表,具體就是經過hive-hbase-handler, 具體配置參見:Hive(五):hive與hbase整合 html
目錄:java
- SparkSql 訪問 hbase配置
- 測試驗證
SparkSql 訪問 hbase配置:sql
- 拷貝HBase的相關jar包到Spark節點上的$SPARK_HOME/lib目錄下,清單以下:
guava-14.0.1.jar htrace-core-3.1.0-incubating.jar hbase-common-1.1.2.2.4.2.0-258.jar hbase-common-1.1.2.2.4.2.0-258-tests.jar hbase-client-1.1.2.2.4.2.0-258.jar hbase-server-1.1.2.2.4.2.0-258.jar hbase-protocol-1.1.2.2.4.2.0-258.jar hive-hbase-handler-1.2.1000.2.4.2.0-258.jar
- 在 ambari 上配置Spark節點的$SPARK_HOME/conf/spark-env.sh,將上面的jar包添加到SPARK_CLASSPATH,以下圖:
- 配置項清單以下:注意jar包之間不能有空格或回車符
export SPARK_CLASSPATH=/usr/hdp/2.4.2.0-258/spark/lib/guava-11.0.2.jar: /usr/hdp/2.4.2.0-258/spark/lib/hbase-client-1.1.2.2.4.2.0-258.jar:/usr/hdp/2.4.2.0-258/spark/lib/hbase-common-1.1.2.2.4.2.0-258.jar:/usr/hdp/2.4.2.0-258/spark/lib/hbase-protocol-1.1.2.2.4.2.0-258.jar:/usr/hdp/2.4.2.0-258/spark/lib/hbase-server-1.1.2.2.4.2.0-258.jar:/usr/hdp/2.4.2.0-258/spark/lib/hive-hbase-handler-1.2.1000.2.4.2.0-258.jar:/usr/hdp/2.4.2.0-258/spark/lib/htrace-core-3.1.0-incubating.jar: /usr/hdp/2.4.2.0-258/spark/lib/protobuf-java-2.5.0.jar:${SPARK_CLASSPATH}
- 將hbase-site.xml拷貝至${HADOOP_CONF_DIR},因爲spark-env.sh中配置了Hadoop配置文件目錄${HADOOP_CONF_DIR},所以會將hbase-site.xml加載,hbase-site.xml中主要是如下幾個參數的配置:
<property> <name>hbase.zookeeper.quorum</name> <value>r,hdp2,hdp3</value> <description>HBase使用的zookeeper節點</description> </property> <property> <name>hbase.client.scanner.caching</name> <value>100</value> <description>HBase客戶端掃描緩存,對查詢性能有很大幫助</description> </property>
- ambari 上重啓修改配置後影響的組件服務
測試驗證:緩存
- 任一spark client節點驗證:
- 命令: cd /usr/hdp/2.4.2.0-258/spark/bin (spark安裝目錄)
- 命令: ./spark-sql
- 執行: select * from stocksinfo; (stocksinfo 爲與hbase關聯的hive外部表)
- 結果以下則OK: