spark SQL(六)性能調整

spark SQL 性能調整

對於某些工做負載,能夠經過在內存中緩存數據或打開一些實驗選項來提升性能。

1,在內存中緩存數據
       Spark SQL能夠經過調用spark.catalog.cacheTable("tableName")或使用內存中的列格式緩存表dataFrame.cache()。而後,Spark SQL將只掃描所需的列,並自動調整壓縮以最大限度地減小內存使用和GC壓力。你能夠調用spark.catalog.uncacheTable("tableName")從內存中刪除表。
       內存中緩存的配置可使用上面的setConf方法SparkSession或SET key=value使用SQL 運行 命令來完成。
屬性名稱 默認 含義
spark.sql.inMemoryColumnarStorage.compressed true 設置爲true時,Spark SQL將根據數據的統計信息自動爲每列選擇壓縮編解碼器。
spark.sql.inMemoryColumnarStorage.batchSize 10000 控制列式高速緩存的批量大小。較大的批量大小能夠提升內存利用率和壓縮率,可是在緩存數據時會面臨OOM風險。

2,其餘配置選項
如下選項也可用於調整查詢執行的性能。在未來的版本中,這些選項可能會被棄用,由於會自動執行更多的優化。
屬性名稱 默認 含義
spark.sql.files.maxPartitionBytes 134217728(128 MB) 讀取文件時打包到單個分區的最大字節數。
spark.sql.files.openCostInBytes 4194304(4 MB) 能夠同時掃描以字節數量度量的打開文件的估計成本。將多個文件放入分區時使用。
最好是高估,那麼小文件的分區會比大文件的分區快(這是首先安排的)。
spark.sql.broadcastTimeout 300 廣播鏈接中的廣播等待時間以秒爲單位超時
spark.sql.autoBroadcastJoinThreshold 10485760(10 MB) 配置在執行鏈接時將廣播到全部工做節點的表的最大大小(以字節爲單位)。經過將
此值設置爲-1,能夠禁用廣播。請注意,目前只有ANALYZE TABLE <tableName>
COMPUTE STATISTICS noscan運行命令的Hive Metastore表才支持統計信息 。
spark.sql.shuffle.partitions 200 配置混洗鏈接或聚合數據時要使用的分區數。

3, 分佈式SQL引擎
         Spark SQL也可使用其JDBC / ODBC或命令行界面做爲分佈式查詢引擎。在這種模式下,最終用戶或應用程序能夠直接與Spark SQL進行交互以運行SQL查詢,而無需編寫任何代碼。
4, 運行Thrift JDBC / ODBC服務器

       這裏實現的Thrift JDBC / ODBC服務器對應HiveServer2 於Hive 1.2.1。您可使用Spark或Hive 1.2.1附帶的beeline腳本測試JDBC服務器。 要啓動JDBC / ODBC服務器,請在Spark目錄中運行如下命令:sql

./sbin/start-thriftserver.sh
該腳本接受全部的 bin/spark-submit 命令行選項,還有一個 --hiveconf 選項來指定Hive屬性。您能夠運行 ./sbin/start-thriftserver.sh --help 全部可用選項的完整列表。默認狀況下,服務器偵聽localhost:10000。你能夠經過兩個環境變量覆蓋這個行爲,即:
export HIVE_SERVER2_THRIFT_PORT=<listening-port>
export HIVE_SERVER2_THRIFT_BIND_HOST=<listening-host>
./sbin/start-thriftserver.sh \
  --master <master-uri> \
  ...
或系統屬性:
./sbin/start-thriftserver.sh \
  --hiveconf hive.server2.thrift.port=<listening-port> \
  --hiveconf hive.server2.thrift.bind.host=<listening-host> \
  --master <master-uri>
  ...
如今,您可使用直線來測試Thrift JDBC / ODBC服務器:
./bin/beeline
使用如下命令直接鏈接到JDBC / ODBC服務器:
beeline> !connect jdbc:hive2://localhost:10000

直線會問你一個用戶名和密碼。在非安全模式下,只需在您的機器上輸入用戶名和密碼便可。對於安全模式,請按照直線文檔中的 說明進行操做apache

hive 的結構是經過將您作hive-site.xmlcore-site.xmlhdfs-site.xml文件conf/緩存

您也可使用Hive附帶的直線腳本。安全

Thrift JDBC服務器還支持經過HTTP傳輸發送節儉的RPC消息。使用如下設置啓用HTTP模式做爲系統屬性或在hive-site.xml文件中conf/服務器

hive.server2.transport.mode - Set this to value: http
hive.server2.thrift.http.port - HTTP port number to listen on; default is 10001
hive.server2.http.endpoint - HTTP endpoint; default is cliservice
要測試,使用直線鏈接到HTTP模式下的JDBC / ODBC服務器:
beeline> !connect jdbc:hive2://<host>:<port>/<database>?hive.server2.transport.mode=http;hive.server2.thrift.http.path=<http_endpoint>
5, 運行Spark SQL CLI
Spark SQL CLI是一種方便的工具,能夠在本地模式下運行Hive Metastore服務,並從命令行執行查詢輸入。請注意,Spark SQL CLI沒法與Thrift JDBC服務器通訊。
要啓動Spark SQL CLI,請在Spark目錄中運行如下命令:
./bin/spark-sql
hive的結構是經過將您作 hive-site.xml core-site.xml hdfs-site.xml 文件 conf/ 您能夠運行 ./bin/spark-sql --help 全部可用選項的完整列表。
相關文章
相關標籤/搜索