從頭學習大數據培訓課程 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/jars3.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 5G5.spark-jdbc編程
通過JDBC連接thriftserver
pom里添加spark的hive-jdbc本文由海牛學院青牛原創 | 如需轉載請註明出處
推薦閱讀:
※大數據時代:網路數據與科學的時代
※大數據時代的數據價值與利用
※大數據時代:大數據的結果是福還是禍?
※大數據時代必須破解的重大現實課題
※R語言 從入門到精通之一R語言初識