從頭學習大數據培訓課程 spark 基於內存的分散式計算框架(四)spark-sql

1.hive vs spark-sql

為了給熟悉RDBMS但又不理解MapReduce的技術人員提供快速上手的工具,hive應運而生,它是運行在Hadoop上的SQL-on-hadoop工具。但是MapReduce計算過程中大量的中間磁碟落地過程消耗了大量的I/O,運行效率底,spark sql而是採用內存存儲可以減少大量的中間磁碟落地數據。相比hive速度能提高10到100倍。

2.集群配置

拷貝hive的配置文件到spark conf的目錄下,並刪除不必要的信息,增加thrift server配置

修改conf/hive-site.xml 中的 「hive.metastore.schema.verification」值為false即可解決 「Caused by: MetaException(message:Version information not found in metastore.)

減少日誌輸出

spark-env.sh

spark-defaults.conf,yarn模式運行所需要的Libs

/usr/local/spark/jars

3.spark-sql

這種方式每個人一個driver彼此之間的數據無法共享

spark-sql --master yarn --queue hainiu --num-executors 12 --executor-memory 5G

默認的任務partitions為200

SET spark.sql.shuffle.partitions=20;

可以減少shuffle的次數

spark-sql --help可以查看CLI命令參數:

4.spart thriftserver

這種方式所有人可以連接driver彼此之間的數據可以共享

ThriftServer是一個JDBC/ODBC介面,用戶可以通過JDBC/ODBC連接ThriftServer來訪問SparkSQL的數據。ThriftServer在啟動的時候,會啟動了一個SparkSQL的應用程序,而通過JDBC/ODBC連接進來的客戶端共同分享這個SparkSQL應用程序的資源,也就是說不同的用戶之間可以共享數據;ThriftServer啟動時還開啟一個偵聽器,等待JDBC客戶端的連接和提交查詢。所以,在配置ThriftServer的時候,至少要配置ThriftServer的主機名和埠,如果要使用Hive數據的話,還要提供Hive Metastore的uris。

使用hadoop用戶,不然不能創建logs目錄許可權

/usr/local/spark/sbin/start-thriftserver.sh --master yarn --queue hainiu

使用任意業務用戶來使用beeline連接thriftserver

/usr/local/hive/bin/beeline

這是使用了hive的beeline,因為與sparkserver提供的jdbc版本不一致所以,提示這個錯誤

/usr/local/spark/bin/beeline

!connect jdbc:hive2://nn2.hadoop:20000

用spark的beeline就可以連接成功,因為使用的版本是一致的

緩存表,內存不夠就刷到硬碟

cache table user_install_status;

這時數據緩存在硬碟,查詢用時30秒

可以調大thriftserver的executor緩存和executor數量 --num-executors 12 --executor-memory 5G

/usr/local/spark/sbin/start-thriftserver.sh --master yarn --queue hainiu --num-executors 12 --executor-memory 5G

5.spark-jdbc編程

通過JDBC連接thriftserver

pom里添加spark的hive-jdbc

本文由海牛學院青牛原創 | 如需轉載請註明出處


推薦閱讀:

大數據時代:網路數據與科學的時代
大數據時代的數據價值與利用
大數據時代:大數據的結果是福還是禍?
大數據時代必須破解的重大現實課題
R語言 從入門到精通之一R語言初識

TAG:Spark | 大數據 | 大數據時代 |