spark SQL(六)效能調整
阿新 • • 發佈:2019-01-29
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目錄中執行以下命令:
./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
直線會問你一個使用者名稱和密碼。在非安全模式下,只需在您的機器上輸入使用者名稱和密碼即可。對於安全模式,請按照直線文件
hive 的結構是通過將您做hive-site.xml
,core-site.xml
和hdfs-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
所有可用選項的完整列表。