在好例子网,分享、交流、成长!
您当前所在位置:首页Others 开发实例一般编程问题 → ParquetSharp:高性能.NET Apache Parquet读写库

ParquetSharp:高性能.NET Apache Parquet读写库

一般编程问题

下载此实例
  • 开发语言:Others
  • 实例大小:1.12M
  • 下载次数:0
  • 浏览次数:9
  • 发布时间:2024-03-20
  • 实例类别:一般编程问题
  • 发 布 人:chenxiaolan
  • 文件格式:.zip
  • 所需积分:2
 

实例介绍

【实例简介】
介绍
ParquetSharp是一个跨平台的.NET库,专门用于读写Apache Parquet文件。它以C#实现,并作为Apache Parquet C++的PInvoke封装,以确保高性能和兼容性。如果您需要与.NET DataFrames进行便捷集成,请查看ParquetSharp.DataFrame。

支持的平台:
  • Linux
  • Windows
  • macOS

为什么使用Parquet?
Apache Parquet是一个开源的、列式数据文件格式,旨在实现数据的高效存储和检索。与CSV文件相比,Parquet在执行查询时速度可提升34倍,同时占用空间减少87%。

快速开始
以下示例展示了如何写入然后读取一个包含三个列的Parquet文件,这些列代表了对象-值对的时间序列。
var timestamps = new DateTime[] { /* ... */ };
var objectIds = new int[] { /* ... */ };
var values = new float[] { /* ... */ };

var columns = new Column[]
{
    new Column<DateTime>("Timestamp"),
    new Column<int>("ObjectId"),
    new Column<float>("Value")
};

using var file = new ParquetFileWriter("float_timeseries.parquet", columns);
using var rowGroup = file.AppendRowGroup();

using (var timestampWriter = rowGroup.NextColumn().LogicalWriter<DateTime>())
{
    timestampWriter.WriteBatch(timestamps);
}
using (var objectIdWriter = rowGroup.NextColumn().LogicalWriter<int>())
{
    objectIdWriter.WriteBatch(objectIds);
}
using (var valueWriter = rowGroup.NextColumn().LogicalWriter<float>())
{
    valueWriter.WriteBatch(values);
}

file.Close();

文档
更详细地了解如何使用ParquetSharp,请参阅以下文档:
  • 写入Parquet文件
  • 读取Parquet文件
  • 处理嵌套数据
  • 读写Arrow数据
  • 行向API
  • 自定义类型
  • 写入TimeSpan数据

性能
通过运行ParquetSharp.Benchmark.csproj可以重现以下基准测试。与Parquet.NET 4.6.2相比,ParquetSharp 10.0.1在处理C# decimal类型的Decimal测试中读取速度快4倍,写入速度快3倍,在处理{int, DateTime, float}类型的三列的TimeSeries测试中,读取速度快2.8倍,写入速度快1.5倍。

已知限制
由于这个库是Parquet C++库的薄封装,错误使用可能导致原生内存访问违规。
【实例截图】
【核心代码】
文件清单
└── ParquetSharp-862568b3ffa48bc59205443535ac4cdb66b27c4c
    ├── build_unix.sh
    ├── build_windows.ps1
    ├── CMakeLists.txt
    ├── CODE_OF_CONDUCT.md
    ├── cpp
    │   ├── AesKey.h
    │   ├── arrow
    │   │   ├── ArrowReaderProperties.cpp
    │   │   ├── ArrowWriterPropertiesBuilder.cpp
    │   │   ├── ArrowWriterProperties.cpp
    │   │   ├── FileReader.cpp
    │   │   └── FileWriter.cpp
    │   ├── Buffer.cpp
    │   ├── BufferOutputStream.cpp
    │   ├── BufferReader.cpp
    │   ├── CMakeLists.txt
    │   ├── ColumnChunkMetaData.cpp
    │   ├── ColumnCryptoMetaData.cpp
    │   ├── ColumnDecryptionPropertiesBuilder.cpp
    │   ├── ColumnDecryptionProperties.cpp
    │   ├── ColumnDescriptor.cpp
    │   ├── ColumnEncryptionPropertiesBuilder.cpp
    │   ├── ColumnEncryptionProperties.cpp
    │   ├── ColumnPath.cpp
    │   ├── ColumnReader.cpp
    │   ├── ColumnWriter.cpp
    │   ├── CString.h
    │   ├── Enums.cpp
    │   ├── ExceptionInfo.cpp
    │   ├── ExceptionInfo.h
    │   ├── FileDecryptionPropertiesBuilder.cpp
    │   ├── FileDecryptionProperties.cpp
    │   ├── FileEncryptionPropertiesBuilder.cpp
    │   ├── FileEncryptionProperties.cpp
    │   ├── FileMetaData.cpp
    │   ├── GroupNode.cpp
    │   ├── KeyValueMetadata.cpp
    │   ├── LogicalType.cpp
    │   ├── ManagedAadPrefixVerifier.h
    │   ├── ManagedDecryptionKeyRetriever.h
    │   ├── ManagedOutputStream.cpp
    │   ├── ManagedRandomAccessFile.cpp
    │   ├── MemoryPool.cpp
    │   ├── Node.cpp
    │   ├── OutputStream.cpp
    │   ├── ParquetFileReader.cpp
    │   ├── ParquetFileWriter.cpp
    │   ├── PrimitiveNode.cpp
    │   ├── RandomAccessFile.cpp
    │   ├── ReaderProperties.cpp
    │   ├── ResizableBuffer.cpp
    │   ├── RowGroupMetaData.cpp
    │   ├── RowGroupReader.cpp
    │   ├── RowGroupWriter.cpp
    │   ├── SchemaDescriptor.cpp
    │   ├── Statistics.cpp
    │   ├── TypedColumnReader.cpp
    │   ├── TypedColumnWriter.cpp
    │   ├── TypedStatistics.cpp
    │   ├── WriterPropertiesBuilder.cpp
    │   └── WriterProperties.cpp
    ├── csharp
    │   ├── AadPrefixVerifier.cs
    │   ├── AesKey.cs
    │   ├── ApplicationVersion.cs
    │   ├── Arrow
    │   │   ├── ArrowReaderProperties.cs
    │   │   ├── ArrowWriterPropertiesBuilder.cs
    │   │   ├── ArrowWriterProperties.cs
    │   │   ├── FileReader.cs
    │   │   └── FileWriter.cs
    │   ├── BufferedReader.cs
    │   ├── ByteArray.cs
    │   ├── ByteArrayReaderCache.cs
    │   ├── ByteBuffer.cs
    │   ├── ColumnChunkMetaData.cs
    │   ├── ColumnCryptoMetaData.cs
    │   ├── Column.cs
    │   ├── ColumnDecryptionPropertiesBuilder.cs
    │   ├── ColumnDecryptionProperties.cs
    │   ├── ColumnDescriptor.cs
    │   ├── ColumnEncryptionPropertiesBuilder.cs
    │   ├── ColumnEncryptionProperties.cs
    │   ├── ColumnOrder.cs
    │   ├── ColumnReader.cs
    │   ├── ColumnWriter.cs
    │   ├── Compression.cs
    │   ├── Date.cs
    │   ├── DateTimeNanos.cs
    │   ├── Decimal128.cs
    │   ├── DecryptionKeyRetriever.cs
    │   ├── DefaultWriterProperties.cs
    │   ├── Encoding.cs
    │   ├── ExceptionInfo.cs
    │   ├── FileDecryptionPropertiesBuilder.cs
    │   ├── FileDecryptionProperties.cs
    │   ├── FileEncryptionPropertiesBuilder.cs
    │   ├── FileEncryptionProperties.cs
    │   ├── FileMetaData.cs
    │   ├── FixedLenByteArray.cs
    │   ├── IColumnDescriptorVisitor.cs
    │   ├── IColumnReaderVisitor.cs
    │   ├── IColumnWriterVisitor.cs
    │   ├── ILogicalColumnReaderVisitor.cs
    │   ├── ILogicalColumnWriterVisitor.cs
    │   ├── Int96.cs
    │   ├── InternalsVisibleTo.cs
    │   ├── IO
    │   │   ├── Buffer.cs
    │   │   ├── BufferOutputStream.cs
    │   │   ├── BufferReader.cs
    │   │   ├── ManagedOutputStream.cs
    │   │   ├── ManagedRandomAccessFile.cs
    │   │   ├── OutputStream.cs
    │   │   ├── RandomAccessFile.cs
    │   │   └── ResizableBuffer.cs
    │   ├── KeyValueMetadata.cs
    │   ├── LogicalBatchReader
    │   │   ├── ArrayReader.cs
    │   │   ├── DirectReader.cs
    │   │   ├── ILogicalBatchReader.cs
    │   │   ├── LeafReader.cs
    │   │   ├── LogicalBatchReaderFactory.cs
    │   │   ├── NestedReader.cs
    │   │   ├── OptionalNestedReader.cs
    │   │   ├── OptionalReader.cs
    │   │   └── ScalarReader.cs
    │   ├── LogicalBatchWriter
    │   │   ├── ArrayWriter.cs
    │   │   ├── ILogicalBatchWriter.cs
    │   │   ├── LogicalBatchWriterFactory.cs
    │   │   ├── NestedWriter.cs
    │   │   ├── OptionalNestedWriter.cs
    │   │   └── ScalarWriter.cs
    │   ├── LogicalColumnReader.cs
    │   ├── LogicalColumnStream.cs
    │   ├── LogicalColumnWriter.cs
    │   ├── LogicalReadConverterFactory.cs
    │   ├── LogicalRead.cs
    │   ├── LogicalStreamBuffers.cs
    │   ├── LogicalType.cs
    │   ├── LogicalTypeFactory.cs
    │   ├── LogicalWriteConverterFactory.cs
    │   ├── LogicalWrite.cs
    │   ├── LongPath.cs
    │   ├── MemoryPool.cs
    │   ├── Nested.cs
    │   ├── ParquetCipher.cs
    │   ├── ParquetDll.cs
    │   ├── ParquetException.cs
    │   ├── ParquetFileReader.cs
    │   ├── ParquetFileWriter.cs
    │   ├── ParquetHandle.cs
    │   ├── ParquetSharp.csproj
    │   ├── ParquetSharp.targets
    │   ├── ParquetVersion.cs
    │   ├── PhysicalType.cs
    │   ├── ReaderProperties.cs
    │   ├── Repetition.cs
    │   ├── RowGroupMetaData.cs
    │   ├── RowGroupReader.cs
    │   ├── RowGroupWriter.cs
    │   ├── RowOriented
    │   │   ├── MappedField.cs
    │   │   ├── MapToColumnAttribute.cs
    │   │   ├── ParquetDecimalScale.cs
    │   │   ├── ParquetFile.cs
    │   │   ├── ParquetRowReader.cs
    │   │   └── ParquetRowWriter.cs
    │   ├── Schema
    │   │   ├── ColumnPath.cs
    │   │   ├── ConvertedType.cs
    │   │   ├── GroupNode.cs
    │   │   ├── Node.cs
    │   │   ├── NodeType.cs
    │   │   ├── PrimitiveNode.cs
    │   │   └── SchemaUtils.cs
    │   ├── SchemaDescriptor.cs
    │   ├── SortOrder.cs
    │   ├── Statistics.cs
    │   ├── StringUtil.cs
    │   ├── TimeSpanNanos.cs
    │   ├── TimeUnit.cs
    │   ├── TypeUtils.cs
    │   ├── WriterPropertiesBuilder.cs
    │   └── WriterProperties.cs
    ├── csharp.benchmark
    │   ├── Check.cs
    │   ├── DecimalRead.cs
    │   ├── DecimalWrite.cs
    │   ├── FloatArrayTimeSeriesRead.cs
    │   ├── FloatTimeSeriesBase.cs
    │   ├── FloatTimeSeriesRead.cs
    │   ├── FloatTimeSeriesWrite.cs
    │   ├── NestedRead.cs
    │   ├── NestedWrite.cs
    │   ├── ParquetSharp.Benchmark.csproj
    │   ├── Program.cs
    │   ├── Properties
    │   │   └── launchSettings.json
    │   └── SizeInBytesColumn.cs
    ├── csharp.test
    │   ├── Arrow
    │   │   ├── TestArrowReaderProperties.cs
    │   │   ├── TestArrowRoundTrip.cs
    │   │   ├── TestArrowWriterProperties.cs
    │   │   ├── TestFileReader.cs
    │   │   ├── TestFileWriter.cs
    │   │   └── TestTimeUnit.cs
    │   ├── LogicalColumnReaderToArray.cs
    │   ├── LogicalValueGetter.cs
    │   ├── LogicalValueSetter.cs
    │   ├── ParquetSharp.Test.csproj
    │   ├── PhysicalValueGetter.cs
    │   ├── PhysicalValueSetter.cs
    │   ├── Program.cs
    │   ├── Properties
    │   │   └── launchSettings.json
    │   ├── TestAadPrefixVerifier.cs
    │   ├── TestAesKey.cs
    │   ├── TestBuffer.cs
    │   ├── TestByteArrayReaderCache.cs
    │   ├── TestCaseGenericAttribute.cs
    │   ├── TestColumn.cs
    │   ├── TestColumnPath.cs
    │   ├── TestColumnReader.cs
    │   ├── TestColumnWriter.cs
    │   ├── TestDate.cs
    │   ├── TestDateTimeNanos.cs
    │   ├── TestDecimal128.cs
    │   ├── TestDecimal.cs
    │   ├── TestDerivedKeyRetriever.cs
    │   ├── TestEncryption.cs
    │   ├── TestFiles
    │   │   ├── generate_parquet.py
    │   │   ├── map.parquet
    │   │   └── nested.parquet
    │   ├── TestKeyValueMetadata.cs
    │   ├── TestLogicalColumnReader.cs
    │   ├── TestLogicalColumnWriter.cs
    │   ├── TestLogicalTypeFactory.cs
    │   ├── TestLogicalTypeRoundtrip.cs
    │   ├── TestManagedRandomAccessFile.cs
    │   ├── TestMaps.cs
    │   ├── TestMemoryLeaks.cs
    │   ├── TestMemoryPool.cs
    │   ├── TestNestedReads.cs
    │   ├── TestNode.cs
    │   ├── TestParquetFileReader.cs
    │   ├── TestParquetFileWriter.cs
    │   ├── TestPhysicalTypeRoundtrip.cs
    │   ├── TestReaderProperties.cs
    │   ├── TestRowOrientedParquetFile.cs
    │   └── TestWriterProperties.cs
    ├── docs
    │   ├── Arrow.md
    │   ├── Nested.md
    │   ├── PowerShell.md
    │   ├── Reading.md
    │   ├── RowOriented.md
    │   ├── TimeSpan.md
    │   ├── TypeFactories.md
    │   └── Writing.md
    ├── fsharp.test
    │   ├── ParquetSharp.Test.FSharp.fsproj
    │   └── TestRowOrientedApi.fs
    ├── global.json
    ├── LICENSE.txt
    ├── logo
    │   ├── 1x
    │   │   ├── ParquetSharp_IconLogo_RGB-Black.png
    │   │   ├── ParquetSharp_IconLogo_RGB-Color.png
    │   │   └── ParquetSharp_IconLogo_RGB-White.png
    │   ├── ai
    │   │   ├── ParquetSharp_IconLogo_RGB.ai
    │   │   └── ParquetSharp_SignatureLogo_RGB.ai
    │   ├── png
    │   │   ├── ParquetSharp_IconLogo_RGB-Black.png
    │   │   ├── ParquetSharp_IconLogo_RGB-Color.png
    │   │   ├── ParquetSharp_IconLogo_RGB-White.png
    │   │   ├── ParquetSharp_SignatureLogo_RGB-Black.png
    │   │   ├── ParquetSharp_SignatureLogo_RGB-Color.png
    │   │   └── ParquetSharp_SignatureLogo_RGB-White.png
    │   └── svg
    │       ├── ParquetSharp_IconLogo_RGB-Black.svg
    │       ├── ParquetSharp_IconLogo_RGB-Color.svg
    │       ├── ParquetSharp_IconLogo_RGB-White.svg
    │       ├── ParquetSharp_SignatureLogo_RGB-Black.svg
    │       ├── ParquetSharp_SignatureLogo_RGB-Color.svg
    │       └── ParquetSharp_SignatureLogo_RGB-White.svg
    ├── MAINTAINERS.md
    ├── ParquetSharp.DotSettings
    ├── README.md
    └── vcpkg.json

23 directories, 272 files

标签:

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警