|
15 | 15 | #include <IO/VarInt.h> |
16 | 16 | #include <IO/copyData.h> |
17 | 17 | #include <Interpreters/Context.h> |
18 | | -#include <Processors/Formats/Impl/ArrowBufferedStreams.h> |
19 | 18 | #include <Processors/Formats/Impl/Parquet/SchemaConverter.h> |
20 | | -#include <parquet/file_reader.h> |
21 | 19 |
|
22 | 20 | namespace DB |
23 | 21 | { |
@@ -115,11 +113,11 @@ parquet::format::FileMetaData ParquetV3BlockInputFormat::getFileMetadata(Parquet |
115 | 113 | String etag = object_with_metadata->metadata->etag; |
116 | 114 | ParquetMetadataCacheKey cache_key = ParquetMetadataCache::createKey(file_name, etag); |
117 | 115 | return metadata_cache->getOrSetMetadata( |
118 | | - cache_key, [&]() { return Parquet::Reader::readFileMetaData(prefetcher); }); |
| 116 | + cache_key, [&]() { return Parquet::Reader::readFileMetaData(prefetcher, read_options.format.parquet.footer_read_size); }); |
119 | 117 | } |
120 | 118 | else |
121 | 119 | { |
122 | | - return Parquet::Reader::readFileMetaData(prefetcher); |
| 120 | + return Parquet::Reader::readFileMetaData(prefetcher, read_options.format.parquet.footer_read_size); |
123 | 121 | } |
124 | 122 | } |
125 | 123 |
|
@@ -275,7 +273,7 @@ void NativeParquetSchemaReader::initializeIfNeeded() |
275 | 273 | return; |
276 | 274 | Parquet::Prefetcher prefetcher; |
277 | 275 | prefetcher.init(&in, read_options, /*parser_shared_resources_=*/ nullptr); |
278 | | - file_metadata = Parquet::Reader::readFileMetaData(prefetcher); |
| 276 | + file_metadata = Parquet::Reader::readFileMetaData(prefetcher, read_options.format.parquet.footer_read_size); |
279 | 277 | initialized = true; |
280 | 278 | } |
281 | 279 |
|
@@ -350,12 +348,13 @@ void registerParquetFileBucketInfo(std::unordered_map<String, FileBucketInfoPtr> |
350 | 348 |
|
351 | 349 | std::vector<FileBucketInfoPtr> ParquetBucketSplitter::splitToBuckets(size_t bucket_size, ReadBuffer & buf, const FormatSettings & format_settings_) |
352 | 350 | { |
353 | | - std::atomic<int> is_stopped = false; |
354 | | - auto arrow_file = asArrowFile(buf, format_settings_, is_stopped, "Parquet", PARQUET_MAGIC_BYTES, /* avoid_buffering */ true, nullptr); |
355 | | - auto metadata = parquet::ReadMetaData(arrow_file); |
| 351 | + Parquet::ReadOptions read_options = convertReadOptions(format_settings_); |
| 352 | + Parquet::Prefetcher prefetcher; |
| 353 | + prefetcher.init(&buf, read_options, /*parser_shared_resources_=*/ nullptr); |
| 354 | + auto metadata = Parquet::Reader::readFileMetaData(prefetcher, read_options.format.parquet.footer_read_size); |
356 | 355 | std::vector<size_t> bucket_sizes; |
357 | | - for (int i = 0; i < metadata->num_row_groups(); ++i) |
358 | | - bucket_sizes.push_back(metadata->RowGroup(i)->total_byte_size()); |
| 356 | + for (const auto & row_group : metadata.row_groups) |
| 357 | + bucket_sizes.push_back(size_t(row_group.total_byte_size)); |
359 | 358 |
|
360 | 359 | std::vector<std::vector<size_t>> buckets; |
361 | 360 | size_t current_weight = 0; |
|
0 commit comments