Skip to content

Commit 0e9fc69

Browse files
ZouxxyyLakehouse Engine Bot
authored andcommitted
1
Alchemy-item: (ID = 988) Add fileNameGenerator to the constructor of IcebergInsertTableHandle commit 1/1 - a5f7e46
1 parent 2582cff commit 0e9fc69

File tree

2 files changed

+24
-19
lines changed

2 files changed

+24
-19
lines changed

velox/connectors/hive/iceberg/IcebergDataSink.cpp

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -79,20 +79,7 @@ folly::dynamic extractPartitionValue<TypeKind::TIMESTAMP>(
7979
return timestamp.toMicros();
8080
}
8181

82-
class IcebergFileNameGenerator : public FileNameGenerator {
83-
public:
84-
IcebergFileNameGenerator() {}
85-
86-
std::pair<std::string, std::string> gen(
87-
std::optional<uint32_t> bucketId,
88-
const std::shared_ptr<const HiveInsertTableHandle> insertTableHandle,
89-
const ConnectorQueryCtx& connectorQueryCtx,
90-
bool commitRequired) const override;
91-
92-
folly::dynamic serialize() const override;
93-
94-
std::string toString() const override;
95-
};
82+
} // namespace
9683

9784
std::pair<std::string, std::string> IcebergFileNameGenerator::gen(
9885
std::optional<uint32_t> bucketId,
@@ -117,8 +104,6 @@ std::string IcebergFileNameGenerator::toString() const {
117104
return "IcebergFileNameGenerator";
118105
}
119106

120-
} // namespace
121-
122107
IcebergInsertTableHandle::IcebergInsertTableHandle(
123108
std::vector<IcebergColumnHandlePtr> inputColumns,
124109
LocationHandlePtr locationHandle,
@@ -127,7 +112,8 @@ IcebergInsertTableHandle::IcebergInsertTableHandle(
127112
dwio::common::FileFormat tableStorageFormat,
128113
const std::vector<IcebergSortingColumn>& sortedBy,
129114
std::optional<common::CompressionKind> compressionKind,
130-
const std::unordered_map<std::string, std::string>& serdeParameters)
115+
const std::unordered_map<std::string, std::string>& serdeParameters,
116+
std::shared_ptr<const FileNameGenerator> fileNameGenerator)
131117
: HiveInsertTableHandle(
132118
std::vector<std::shared_ptr<const HiveColumnHandle>>(
133119
inputColumns.begin(),
@@ -139,7 +125,7 @@ IcebergInsertTableHandle::IcebergInsertTableHandle(
139125
serdeParameters,
140126
nullptr,
141127
false,
142-
std::make_shared<const IcebergFileNameGenerator>()),
128+
std::move(fileNameGenerator)),
143129
partitionSpec_(std::move(partitionSpec)),
144130
columnTransforms_(
145131
parsePartitionTransformSpecs(partitionSpec_->fields, pool)),

velox/connectors/hive/iceberg/IcebergDataSink.h

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,21 @@ class IcebergSortingColumn : public ISerializable {
4141
const core::SortOrder sortOrder_;
4242
};
4343

44+
class IcebergFileNameGenerator : public FileNameGenerator {
45+
public:
46+
IcebergFileNameGenerator() {}
47+
48+
std::pair<std::string, std::string> gen(
49+
std::optional<uint32_t> bucketId,
50+
const std::shared_ptr<const HiveInsertTableHandle> insertTableHandle,
51+
const ConnectorQueryCtx& connectorQueryCtx,
52+
bool commitRequired) const override;
53+
54+
folly::dynamic serialize() const override;
55+
56+
std::string toString() const override;
57+
};
58+
4459
// Represents a request for Iceberg write.
4560
class IcebergInsertTableHandle final : public HiveInsertTableHandle {
4661
public:
@@ -60,6 +75,8 @@ class IcebergInsertTableHandle final : public HiveInsertTableHandle {
6075
/// @param compressionKind Optional compression to apply to data files.
6176
/// @param serdeParameters Additional serialization/deserialization parameters
6277
/// for the file format.
78+
/// @param fileNameGenerator File name generator for generating unique file
79+
/// names for data files. If nullptr, will use IcebergFileNameGenerator.
6380
IcebergInsertTableHandle(
6481
std::vector<IcebergColumnHandlePtr> inputColumns,
6582
LocationHandlePtr locationHandle,
@@ -69,7 +86,9 @@ class IcebergInsertTableHandle final : public HiveInsertTableHandle {
6986
dwio::common::FileFormat::PARQUET,
7087
const std::vector<IcebergSortingColumn>& sortedBy = {},
7188
std::optional<common::CompressionKind> compressionKind = {},
72-
const std::unordered_map<std::string, std::string>& serdeParameters = {});
89+
const std::unordered_map<std::string, std::string>& serdeParameters = {},
90+
std::shared_ptr<const FileNameGenerator> fileNameGenerator =
91+
std::make_shared<const IcebergFileNameGenerator>());
7392

7493
std::shared_ptr<const IcebergPartitionSpec> partitionSpec() const {
7594
return partitionSpec_;

0 commit comments

Comments
 (0)