Skip to content

Commit 0b7a5ec

Browse files
committed
refactor(native): Decouple Iceberg from HivePrestoToVeloxConnector
1 parent e39c17f commit 0b7a5ec

File tree

5 files changed

+46
-49
lines changed

5 files changed

+46
-49
lines changed

presto-native-execution/presto_cpp/main/connectors/HivePrestoToVeloxConnector.cpp

Lines changed: 31 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -226,23 +226,40 @@ velox::connector::hive::HiveBucketConversion toVeloxBucketConversion(
226226
return veloxBucketConversion;
227227
}
228228

229-
} // namespace
230-
231-
connector::hive::HiveColumnHandle::ColumnType toHiveColumnType(
232-
protocol::hive::ColumnType type) {
233-
switch (type) {
234-
case protocol::hive::ColumnType::PARTITION_KEY:
235-
return connector::hive::HiveColumnHandle::ColumnType::kPartitionKey;
236-
case protocol::hive::ColumnType::REGULAR:
237-
return connector::hive::HiveColumnHandle::ColumnType::kRegular;
238-
case protocol::hive::ColumnType::SYNTHESIZED:
239-
return connector::hive::HiveColumnHandle::ColumnType::kSynthesized;
240-
default:
241-
VELOX_UNSUPPORTED(
242-
"Unsupported Hive column type: {}.", toJsonString(type));
229+
dwio::common::FileFormat toVeloxFileFormat(
230+
const presto::protocol::hive::StorageFormat& format) {
231+
if (format.inputFormat == "com.facebook.hive.orc.OrcInputFormat") {
232+
return dwio::common::FileFormat::DWRF;
233+
} else if (
234+
format.inputFormat == "org.apache.hadoop.hive.ql.io.orc.OrcInputFormat") {
235+
return dwio::common::FileFormat::ORC;
236+
} else if (
237+
format.inputFormat ==
238+
"org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat") {
239+
return dwio::common::FileFormat::PARQUET;
240+
} else if (format.inputFormat == "org.apache.hadoop.mapred.TextInputFormat") {
241+
if (format.serDe == "org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe") {
242+
return dwio::common::FileFormat::TEXT;
243+
} else if (format.serDe == "org.apache.hive.hcatalog.data.JsonSerDe") {
244+
return dwio::common::FileFormat::JSON;
245+
}
246+
} else if (
247+
format.inputFormat ==
248+
"org.apache.hadoop.hive.ql.io.SymlinkTextInputFormat") {
249+
if (format.serDe ==
250+
"org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe") {
251+
return dwio::common::FileFormat::PARQUET;
252+
}
253+
} else if (format.inputFormat == "com.facebook.alpha.AlphaInputFormat") {
254+
// ALPHA has been renamed in Velox to NIMBLE.
255+
return dwio::common::FileFormat::NIMBLE;
243256
}
257+
VELOX_UNSUPPORTED(
258+
"Unsupported file format: {} {}", format.inputFormat, format.serDe);
244259
}
245260

261+
} // namespace
262+
246263
std::unique_ptr<velox::connector::ConnectorSplit>
247264
HivePrestoToVeloxConnector::toVeloxSplit(
248265
const protocol::ConnectorId& catalogId,

presto-native-execution/presto_cpp/main/connectors/HivePrestoToVeloxConnector.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,6 @@
2424

2525
namespace facebook::presto {
2626

27-
velox::connector::hive::HiveColumnHandle::ColumnType toHiveColumnType(
28-
protocol::hive::ColumnType type);
29-
3027
class HivePrestoToVeloxConnector final : public PrestoToVeloxConnector {
3128
public:
3229
explicit HivePrestoToVeloxConnector(std::string connectorName)

presto-native-execution/presto_cpp/main/connectors/IcebergPrestoToVeloxConnector.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
*/
1414

1515
#include "presto_cpp/main/connectors/IcebergPrestoToVeloxConnector.h"
16-
#include "presto_cpp/main/connectors/HivePrestoToVeloxConnector.h"
1716
#include "presto_cpp/main/connectors/PrestoToVeloxConnectorUtils.h"
1817

1918
#include "presto_cpp/presto_protocol/connector/iceberg/IcebergConnectorProtocol.h"

presto-native-execution/presto_cpp/main/connectors/PrestoToVeloxConnectorUtils.cpp

Lines changed: 12 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -728,36 +728,19 @@ velox::common::CompressionKind toFileCompressionKind(
728728
}
729729
}
730730

731-
dwio::common::FileFormat toVeloxFileFormat(
732-
const presto::protocol::hive::StorageFormat& format) {
733-
if (format.inputFormat == "com.facebook.hive.orc.OrcInputFormat") {
734-
return dwio::common::FileFormat::DWRF;
735-
} else if (
736-
format.inputFormat == "org.apache.hadoop.hive.ql.io.orc.OrcInputFormat") {
737-
return dwio::common::FileFormat::ORC;
738-
} else if (
739-
format.inputFormat ==
740-
"org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat") {
741-
return dwio::common::FileFormat::PARQUET;
742-
} else if (format.inputFormat == "org.apache.hadoop.mapred.TextInputFormat") {
743-
if (format.serDe == "org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe") {
744-
return dwio::common::FileFormat::TEXT;
745-
} else if (format.serDe == "org.apache.hive.hcatalog.data.JsonSerDe") {
746-
return dwio::common::FileFormat::JSON;
747-
}
748-
} else if (
749-
format.inputFormat ==
750-
"org.apache.hadoop.hive.ql.io.SymlinkTextInputFormat") {
751-
if (format.serDe ==
752-
"org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe") {
753-
return dwio::common::FileFormat::PARQUET;
754-
}
755-
} else if (format.inputFormat == "com.facebook.alpha.AlphaInputFormat") {
756-
// ALPHA has been renamed in Velox to NIMBLE.
757-
return dwio::common::FileFormat::NIMBLE;
731+
connector::hive::HiveColumnHandle::ColumnType toHiveColumnType(
732+
protocol::hive::ColumnType type) {
733+
switch (type) {
734+
case protocol::hive::ColumnType::PARTITION_KEY:
735+
return connector::hive::HiveColumnHandle::ColumnType::kPartitionKey;
736+
case protocol::hive::ColumnType::REGULAR:
737+
return connector::hive::HiveColumnHandle::ColumnType::kRegular;
738+
case protocol::hive::ColumnType::SYNTHESIZED:
739+
return connector::hive::HiveColumnHandle::ColumnType::kSynthesized;
740+
default:
741+
VELOX_UNSUPPORTED(
742+
"Unsupported Hive column type: {}.", toJsonString(type));
758743
}
759-
VELOX_UNSUPPORTED(
760-
"Unsupported file format: {} {}", format.inputFormat, format.serDe);
761744
}
762745

763746
std::unique_ptr<velox::connector::ConnectorTableHandle> toHiveTableHandle(

presto-native-execution/presto_cpp/main/connectors/PrestoToVeloxConnectorUtils.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include "presto_cpp/presto_protocol/connector/hive/presto_protocol_hive.h"
1818
#include "presto_cpp/presto_protocol/core/presto_protocol_core.h"
1919
#include "velox/connectors/Connector.h"
20+
#include "velox/connectors/hive/TableHandle.h"
2021
#include "velox/dwio/common/Options.h"
2122
#include "velox/type/Filter.h"
2223
#include "velox/type/Type.h"
@@ -46,8 +47,8 @@ std::vector<velox::common::Subfield> toRequiredSubfields(
4647
velox::common::CompressionKind toFileCompressionKind(
4748
const protocol::hive::HiveCompressionCodec& hiveCompressionCodec);
4849

49-
velox::dwio::common::FileFormat toVeloxFileFormat(
50-
const presto::protocol::hive::StorageFormat& format);
50+
velox::connector::hive::HiveColumnHandle::ColumnType toHiveColumnType(
51+
protocol::hive::ColumnType type);
5152

5253
std::unique_ptr<velox::connector::ConnectorTableHandle> toHiveTableHandle(
5354
const protocol::TupleDomain<protocol::Subfield>& domainPredicate,

0 commit comments

Comments
 (0)