亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

【總結】Spark優化(1)-多Job并發執行

發布時間:2020-09-20 07:42:12 來源:網絡 閱讀:18337 作者:巧克力黒 欄目:大數據

Spark程序中一個Job的觸發是通過一個Action算子,比如count(), saveAsTextFile()等

在這次Spark優化測試中,從Hive中讀取數據,將其另外保存四份,其中兩個Job采用串行方式,另外兩個Job采用并行方式。將任務提交到Yarn中執行。能夠明顯看出串行與兵線處理的性能。


每個Job執行時間:

JobID開始時間結束時間耗時
Job 016:59:4517:00:3449s
Job 117:00:3417:01:1339s
Job 217:01:1517:01:55
40s
Job 317:01:1617:02:1256s

四個Job都是自執行相同操作,Job0,Job1一組采用串行方式,Job2,Job3采用并行方式。

Job0,Job1串行方式耗時等于兩個Job耗時之和 49s+39s=88s

Job2,Job3并行方式耗時等于最先開始和最后結束時間只差17:02:12-17:01:15=57s


【總結】Spark優化(1)-多Job并發執行

代碼:

package com.cn.ctripotb;

import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.sql.DataFrame;
import org.apache.spark.sql.hive.HiveContext;


import java.util.*;
import java.util.concurrent.Callable;
import java.util.concurrent.Executors;

/**
 * Created by Administrator on 2016/9/12.
 */
public class HotelTest {
    static ResourceBundle rb = ResourceBundle.getBundle("filepath");
    public static void main(String[] args) {
        SparkConf conf = new SparkConf()
                .setAppName("MultiJobWithThread")
                .set("spark.serializer", "org.apache.spark.serializer.KryoSerializer");

        JavaSparkContext sc = new JavaSparkContext(conf);
        HiveContext hiveContext = new HiveContext(sc.sc());  //測試真實數據時要把這里放開

        final DataFrame df = getHotelInfo(hiveContext);
        //沒有多線程處理的情況,連續執行兩個Action操作,生成兩個Job
        df.rdd().saveAsTextFile(rb.getString("hdfspath") + "/file1",com.hadoop.compression.lzo.LzopCodec.class);
        df.rdd().saveAsTextFile(rb.getString("hdfspath") + "/file2",com.hadoop.compression.lzo.LzopCodec.class);

        //用Executor實現多線程方式處理Job
        java.util.concurrent.ExecutorService executorService = Executors.newFixedThreadPool(2);
        executorService.submit(new Callable<Void>() {
            @Override
            public Void call(){
                df.rdd().saveAsTextFile(rb.getString("hdfspath") + "/file3",com.hadoop.compression.lzo.LzopCodec.class);
                return null;
            }
        });
        executorService.submit(new Callable<Void>() {
            @Override
            public Void call(){
                df.rdd().saveAsTextFile(rb.getString("hdfspath") + "/file4",com.hadoop.compression.lzo.LzopCodec.class);
                return null;
            }
        });

        executorService.shutdown();
    }
    public static DataFrame getHotelInfo(HiveContext hiveContext){
        String sql = "select * from common.dict_hotel_ol";
        return  hiveContext.sql(sql);
    }
}


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

巴南区| 乌兰察布市| 门源| 萨嘎县| 阿拉善左旗| 柯坪县| 营山县| 桦甸市| 毕节市| 松潘县| 永靖县| 牡丹江市| 三江| 宁南县| 启东市| 全州县| 阳城县| 无为县| 商水县| 永新县| 松潘县| 信宜市| 红桥区| 聂荣县| 濮阳市| 正镶白旗| 大埔区| 正定县| 深圳市| 历史| 桑植县| 汉寿县| 浦北县| 大安市| 革吉县| 平果县| 奉节县| 眉山市| 青河县| 遵义县| 长宁县|