Ejemplo n.º 1
0
        public virtual void TestSequenceFileSync()
        {
            Configuration      conf    = new HdfsConfiguration();
            MiniDFSCluster     cluster = new MiniDFSCluster.Builder(conf).Build();
            FileSystem         fs      = cluster.GetFileSystem();
            Path               p       = new Path("/testSequenceFileSync/foo");
            int                len     = 1 << 16;
            FSDataOutputStream @out    = fs.Create(p, FsPermission.GetDefault(), EnumSet.Of(CreateFlag
                                                                                            .Create, CreateFlag.Overwrite, CreateFlag.SyncBlock), 4096, (short)1, len, null);

            SequenceFile.Writer w = SequenceFile.CreateWriter(new Configuration(), SequenceFile.Writer
                                                              .Stream(@out), SequenceFile.Writer.KeyClass(typeof(RandomDatum)), SequenceFile.Writer
                                                              .ValueClass(typeof(RandomDatum)), SequenceFile.Writer.Compression(SequenceFile.CompressionType
                                                                                                                                .None, new DefaultCodec()));
            w.Hflush();
            CheckSyncMetric(cluster, 0);
            w.Hsync();
            CheckSyncMetric(cluster, 1);
            int seed = new Random().Next();

            RandomDatum.Generator generator = new RandomDatum.Generator(seed);
            generator.Next();
            w.Append(generator.GetKey(), generator.GetValue());
            w.Hsync();
            CheckSyncMetric(cluster, 2);
            w.Close();
            CheckSyncMetric(cluster, 2);
            @out.Close();
            CheckSyncMetric(cluster, 3);
            cluster.Shutdown();
        }