蔚來實習--Day5

1.1 今天是蔚來實習的第五天,整理文件和文件夾權限的修改(比如在複製Linux上文件時候,發現文件不能夠被複制,那麼我們可以使用ls -l 來查看某個文件夾下所有文件的權限)

新建文件: cat+ 文件名

刪除文件: rm+ 文件名(可以使用

-r 就是向下遞歸,不管有多少級目錄,一併刪除

-f 就是直接強行刪除,不作任何提示的意思

就是 rm -rf)

合併文件: cat a.sh b.sh > c.sh (注意如果目標文件是這兩個裏面的時候,會產生覆蓋)

比如:

這兒的命令一共包含了10位,第一位是是否爲文件夾,2-4位代表所有者user的權限說明,5-7位代表組羣group的權限說明,8-10位代表其他人other的權限說明。

r  = 4,w = 2 , x= 1 

從而 sudo chmod -r 777 /var

就是給"/var"這個目錄賦予所有人可讀可寫可執行的權限,4+2+1 = 7

-rw-----600  表示只有所有者纔有讀寫的權利

-rw-r–r-- (644) 只有所有者纔有讀和寫的權限,組羣和其他人只有讀的權限
-rwx------ (700) 只有所有者纔有讀,寫,執行的權限
-rwxr-xr-x (755) 只有所有者纔有讀,寫,執行的權限,組羣和其他人只有讀和執行的權限
-rwx–x--x (711) 只有所有者纔有讀,寫,執行的權限,組羣和其他人只有執行的權限
-rw-rw-rw- (666) 每個人都有讀寫的權限

 

=========================================================================================================

2.1 從Hadoop上讀文件

批處理:

final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
DataSet<String> stringDataSet=env.readTextFile("hdfs:///user/zhenghui.liu/lzhTest/Test01");
stringDataSet.print();

 

流處理:

這兒的writeAsText()方法已經被棄用了現在,另外就是最後的setParallelism用於設置寫入的文件數,如果不進行設置,默認是自己電腦的核心數,本機是8,另外就是單文件數量大於1時,會自動建立一個文件夾,設置序號1...n進行保存

final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
DataStreamSource<String> stringDataSet = env.readTextFile("hdfs:///user/zhenghui.liu/lzhTest/Test01");
stringDataSet.writeAsText("hdfs:///user/zhenghui.liu/lzhTest/Test02",
org.apache.flink.core.fs.FileSystem.WriteMode.valueOf("OVERWRITE")).setParallelism(1);

進行單詞統計:

 StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

        // 通過連接 socket 獲取輸入數據,這裏連接到本地9000端口,如果9000端口已被佔用,請換一個端口
        DataStream<String> text = env.readTextFile("hdfs:///user/zhenghui.liu/lzhTest/Test01");

        // 解析數據,按 word 分組,開窗,聚合
        DataStream<Tuple2<String, Integer>> windowCounts = text
                .flatMap(new FlatMapFunction<String, Tuple2<String, Integer>>() {
                    @Override
                    public void flatMap(String value, Collector<Tuple2<String, Integer>> out) {
                        for (String word : value.split("\\s")) { // 將空格,回車,換行等空白符去了
                            out.collect(Tuple2.of(word, 1)); //轉換成一個元組 (word,key),初始爲1
                        }
                    }
                })
                .keyBy(0) // 以第1個元素作爲Key進行分組
//                .timeWindow(Time.seconds(5)) // 窗口的大小爲5S
                .sum(1); // 這兒的1代表將這個位置上的數字進行聚合

        // 將結果打印到控制檯,注意這裏使用的是單線程打印,而非多線程
//        windowCounts.print().setParallelism(1);//單線程
        windowCounts.writeAsText("hdfs:///user/zhenghui.liu/lzhTest/Test02", org.apache.flink.core.fs.FileSystem.WriteMode.valueOf("OVERWRITE")).setParallelism(1);
        windowCounts.print();
        env.execute("Socket Window WordCount");

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章