• 参考


    import com.bigdata.kafka.originalLog.HDFSOutputStreamPool;
    import com.bigdata.kafka.originalLog.StringUtil;
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.fs.FSDataInputStream;
    import org.apache.hadoop.fs.FSDataOutputStream;
    import org.apache.hadoop.fs.FileSystem;
    import org.apache.hadoop.fs.Path;
    import org.apache.hadoop.io.IOUtils;
    import org.junit.Test;
    
    import java.io.*;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
    import java.util.Locale;
    
    /**
     * 测试类
     */
    public class TestHDFS {
    
        static List<File> filelist = new ArrayList<File>();
    
        @Test
        public void testReadHDFS() throws IOException {
            Configuration conf = new Configuration();
            FileSystem fs = FileSystem.get(conf);
            FSDataInputStream in = fs.open(new Path("hdfs://mycluster/user/centos/words.txt"));
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            IOUtils.copyBytes(in, baos, 1024);
            System.out.println(new String(baos.toByteArray()));
        }
    
    
        @Test
        public void testReadHDFS1() throws IOException {
    
    //        FSDataInputStream in = fs.open(new Path("hdfs://mycluster/user/centos/words.txt"));
    //        ByteArrayOutputStream baos = new ByteArrayOutputStream();
    //        IOUtils.copyBytes(in, baos, 1024);
    //        System.out.println(new String(baos.toByteArray()));
            List<File> filelist = getFileList("E:\MyProject\bigdata\data");
            System.out.println(filelist.size());
            FSDataOutputStream out = null;
            for (File f : filelist) {
                BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(f)));
                String line = null;
                while ((line = in.readLine()) != null) {
                    String newline = line + "________2100100";
    //              out = HDFSOutputStreamPool.getInstance().takeOutputStream("/test/merge.txt");
    
                    Configuration conf = new Configuration();
                    FileSystem fs = FileSystem.get(conf);
                  out= fs.append(new Path("/test/merge.txt"));
                    out.write(newline.getBytes());
                    out.write("
    ".getBytes());
                    out.hsync();
                    out.close();
                }
            }
    
    
        }
    
        public static List<File> getFileList(String strPath) {
            File dir = new File(strPath);
            File[] files = dir.listFiles(); // 该文件目录下文件全部放入数组
            if (files != null) {
                for (int i = 0; i < files.length; i++) {
                    String fileName = files[i].getName();
                    if (files[i].isDirectory()) { // 判断是文件还是文件夹
                        getFileList(files[i].getAbsolutePath()); // 获取文件绝对路径
                    } else if (fileName.endsWith("txt")) { // 判断文件名是否以.avi结尾
                        String strFileName = files[i].getAbsolutePath();
                        System.out.println("---" + strFileName);
                        filelist.add(files[i]);
                    } else {
                        continue;
                    }
                }
    
            }
            return filelist;
        }
    
        /**
         * 28/Feb/2017:12:17:48
         */
        @Test
        public void testDate() throws ParseException {
            SimpleDateFormat sdf = new SimpleDateFormat("dd/MMM/yyyy:HH:mm:ss", Locale.US);
            Date date = new Date();
            System.out.println(sdf.format(date));
    
            Date d = sdf.parse("28/Feb/2017:12:17:48");
            System.out.println(d);
            SimpleDateFormat localSDF = new SimpleDateFormat("yyyy/MM/dd/HH/mm", Locale.US);
            System.out.println(localSDF.format(d));
        }
    
        @Test
        public void test1() {
            String log =/* new String(msg) ;*/ "s203|||192.168.231.1|||-|||28/Feb/2017:15:34:45 +0800|||GET /eshop/phone/mi.html HTTP/1.0|||200|||213|||-|||ApacheBench/2.3|||-";
            String[] arr = StringUtil.splitLog(log);
            //主机名
            String hostname = StringUtil.getHostname(arr);
            //日期串
            String dateStr = StringUtil.formatYyyyMmDdHhMi(arr);
            //path
            String rawPath = "/user/centos/eshop/raw/" + dateStr + "/" + hostname + ".log";
            //写入数据到hdfs
            System.out.println(log);
        }
    }
    

      

  • 相关阅读:
    02_5if switch分支与循环语句
    02_4运算符
    02_3程序格式
    Shell脚本调用ftp上传文件
    02_2数据类型转换
    02_1标识符_关键字_数据类型
    01_3Java Application初步
    01_2Java开发环境的下载 安装 配置
    Mac 安装MySQL
    用 Homebrew 带飞你的 Mac
  • 原文地址:https://www.cnblogs.com/hejunhong/p/11000400.html
Copyright © 2020-2023  润新知