示例#1
0
 internal Schema(Thrift.FileMetaData fm)
 {
     _elements = fm.Schema.Skip(1).Select(se => new SchemaElement(se)).ToList();
     foreach (Thrift.SchemaElement se in fm.Schema)
     {
         _pathToElement[se.Name] = new SchemaElement(se);
     }
 }
示例#2
0
        public FileMetadataBuilder()
        {
            _meta = new Thrift.FileMetaData();

            _meta.Created_by = CreatedBy;
            _meta.Version    = 1;
            _meta.Row_groups = new List <Thrift.RowGroup>();
        }
        public FileMetadataBuilder(WriterOptions writerOptions)
        {
            _meta = new Thrift.FileMetaData();
            this._writerOptions = writerOptions;

            _meta.Created_by = CreatedBy;
            _meta.Version    = 1;
            _meta.Row_groups = new List <Thrift.RowGroup>();
        }
示例#4
0
        public ThriftFooter(Schema schema, long totalRowCount)
        {
            if (schema == null)
            {
                throw new ArgumentNullException(nameof(schema));
            }

            _fileMeta          = CreateThriftSchema(schema);
            _fileMeta.Num_rows = totalRowCount;

            _fileMeta.Created_by = $"Parquet.Net version %Version% (build %Git.LongCommitHash%)";
        }
        public Thrift.FileMetaData CreateThriftSchema(Schema schema)
        {
            var meta = new Thrift.FileMetaData();

            meta.Version = 1;
            meta.Schema  = new List <Thrift.SchemaElement>();

            Thrift.SchemaElement root = AddRoot(meta.Schema);
            CreateThriftSchema(schema.Fields, root, meta.Schema);

            return(meta);
        }
示例#6
0
        public ThriftFooter(Schema schema, long totalRowCount)
        {
            if (schema == null)
            {
                throw new ArgumentNullException(nameof(schema));
            }

            _fileMeta          = CreateThriftSchema(schema);
            _fileMeta.Num_rows = totalRowCount;

            Version fileVersion = FileVersion(typeof(ThriftFooter));

            _fileMeta.Created_by = $"Parquet.Net version {fileVersion}";
        }
示例#7
0
        private void PrintStatistics(Thrift.FileMetaData fileMeta, Thrift.ColumnChunk column, Thrift.Statistics stats)
        {
            WriteLine("    Statistics", T.HeadingTextColor);

            if (stats == null || !(stats.__isset.null_count || stats.__isset.distinct_count || stats.__isset.min || stats.__isset.max))
            {
                WriteLine("      none defined", T.ErrorTextColor);
                return;
            }

            const string undefined = "undefined";

            var t = new Table("name", "value");

            t.AddRow("Null Count", stats.__isset.null_count ? stats.Null_count.ToString() : undefined);
            t.AddRow("Distinct Count", stats.__isset.distinct_count ? stats.Distinct_count.ToString() : undefined);
            t.AddRow("Min", stats.__isset.min ? fileMeta.DecodeSingleStatsValue(column, stats.Min) : undefined);
            t.AddRow("Max", stats.__isset.max ? fileMeta.DecodeSingleStatsValue(column, stats.Max) : undefined);
            t.Render(false, 6, T.HeadingTextColor, T.NormalTextColor);
        }
示例#8
0
        public void Execute()
        {
            Thrift.FileMetaData fileMeta = ReadInternalMetadata();

            //root metadata
            WriteLine("File Metadata", T.HeadingTextColor);
            var t = new Table("name", "value");

            t.AddRow("Created By", fileMeta.Created_by);
            t.AddRow("Total Rows", fileMeta.Num_rows);
            t.AddRow("Version", fileMeta.Version);
            t.Render(false, 0, T.HeadingTextColor, T.NormalTextColor);
            WriteLine();

            //custom key-values
            if (fileMeta.Key_value_metadata == null || fileMeta.Key_value_metadata.Count == 0)
            {
                WriteLine("no custom key-value metadata", ConsoleColor.Gray);
            }
            else
            {
                WriteLine("Key-Value Metadata", T.HeadingTextColor);
                t = new Table("key", "vlaue");
                foreach (Thrift.KeyValue kv in fileMeta.Key_value_metadata)
                {
                    t.AddRow(kv.Key, kv.Value);
                }
                t.Render(false, 0, T.HeadingTextColor, T.NormalTextColor);
            }
            WriteLine();

            //row groups
            WriteLine("Row Groups", T.HeadingTextColor);
            int i = 0;

            foreach (Thrift.RowGroup rg in fileMeta.Row_groups)
            {
                Print(fileMeta, rg, i++);
            }
        }
示例#9
0
        private void Print(Thrift.FileMetaData fileMeta, Thrift.RowGroup rg, int index)
        {
            WriteLine();
            PoshWriteLine($"  Row Group #{{{index}}}", ConsoleColor.Red);
            var t = new Table("name", "value");

            t.AddRow("Total Rows", rg.Num_rows);
            t.AddRow("Total Byte Size", GetSizeString(rg.Total_byte_size));
            t.Render(false, 2, T.HeadingTextColor, T.NormalTextColor);
            WriteLine();

            //columns
            int i = 0;

            foreach (Thrift.ColumnChunk column in rg.Columns)
            {
                t = new Table("name", "value");
                t.AddRow("File Offset", column.File_offset);
                t.AddRow("File Path", column.File_path ?? string.Empty);
                t.AddRow("Codec", column.Meta_data.Codec);
                t.AddRow("Data Page Offset", column.Meta_data.Data_page_offset);
                t.AddRow("Dictionary Page Offset", column.Meta_data.Dictionary_page_offset);
                t.AddRow("Index Page Offset", column.Meta_data.Index_page_offset);
                t.AddRow("Encodings", string.Join(", ", column.Meta_data.Encodings));
                //t.AddRow("", column.Meta_data.Encoding_stats[0].)
                t.AddRow("Total Values", column.Meta_data.Num_values);
                t.AddRow("Path in Schema", string.Join(".", column.Meta_data.Path_in_schema));
                t.AddRow("Compressed Size", GetSizeString(column.Meta_data.Total_compressed_size));
                t.AddRow("Uncompressed Size", GetSizeString(column.Meta_data.Total_uncompressed_size));
                t.AddRow("Type", column.Meta_data.Type);
                PoshWriteLine($"    Column #{{{i++}}}", ConsoleColor.Red);
                t.Render(false, 4, T.HeadingTextColor, T.NormalTextColor);
                PrintStatistics(fileMeta, column, column.Meta_data.Statistics);

                WriteLine();
            }
        }
示例#10
0
 public void SetMeta(Thrift.FileMetaData meta)
 {
     _meta = meta;
 }
示例#11
0
 public ThriftFooter(Thrift.FileMetaData fileMeta)
 {
     _fileMeta = fileMeta ?? throw new ArgumentNullException(nameof(fileMeta));
 }
示例#12
0
 public ThriftFooter(Thrift.FileMetaData fileMeta)
 {
     _fileMeta = fileMeta ?? throw new ArgumentNullException(nameof(fileMeta));
     _tree     = new ThriftSchemaTree(_fileMeta.Schema);
 }
示例#13
0
 public ThriftFooter(Thrift.FileMetaData fileMeta)
 {
     _fileMeta = fileMeta;
 }