您好,登錄后才能下訂單哦!
==> 在內存中緩存數據
---> 性能調優主要是將數據放入內存中操作
---> 使用例子:
// 從 Oracle 數據庫中讀取數據,生成 DataFrame val oracleDF = spark.read.format("jdbc") .option("url", "jdbc:oracle:thin:@192.168.10.100:1521/orcl.example.com") .option("dbtable", "scott.emp") .option("user", "scott") .option("password", "tiger").load // 將 DataFrame 注冊成表 oracleDF.registerTempTable("emp") // 執行查詢,并通過 Web Console 監控執行的時間 spark.sql("select * from emp").show // 將表進行緩存,并查詢兩次,通過 Web Console 監控執行的時間 spark.sqlContext.cacheTable("emp") // 清空緩存 spark.sqlContext.cacheTable("emp") spark.sqlContext.clearCache
==> 優化相關參數
---> spark.sql.inMemoryColumnarStorage.compressed
---- 默認值: true
---- Spark SQL 將會基于統計信息自動地為每一列選擇一種壓縮編碼方式
---> spark.sql.inMemoryColumnarStorage.batchSize
---- 默認值: 10000
---- 緩存批處理大小, 較大的批處理可以提高內存利用率和壓縮率,但同時也會帶來 OOM(Out Of Memory)的風險
---> spark.sql.files.maxPartitionBytes
---- 默認值: 128M
---- 讀取文件時單個分區可容納的最大字節數
---> spark.sql.files.openCostinBytes
---- 默認值: 4M
---- 打開文件的估算成本,按照同一時間能夠掃描的字節數來測量,當往一個分區寫入多個文件時會使用,高估相對較好,這樣小文件分區將會比大文件分區速度更快(優先調度)
---> spark.sql.autoBroadcastJoinThreshold
---- 默認值:10M
---- 用于配置一個表在執行 join 操作時能夠廣播給所有 worker 節點的最大字節大小,通地將這個值設置為-1可以禁用廣播,
---- 注意:當前 數據統計僅支持已經運行了 ANALYZE TABLE <tablename> COMPUTE STATISTICS noscan 命令的 Hive Metastore 表
---> spark.sql.shuffle.partitions
---- 默認值: 200
---- 用于配置 join 或聚合操作混洗(shuffle)數據時使用的分區數
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。