Skip to content

Commit a108796

Browse files
committed
refactor(native): Decouple Iceberg from HivePrestoToVeloxConnector
1 parent cc46adb commit a108796

File tree

5 files changed

+47
-50
lines changed

5 files changed

+47
-50
lines changed

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

Lines changed: 32 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -301,23 +301,40 @@ std::unique_ptr<connector::ConnectorTableHandle> toHiveTableHandle(
301301
finalTableParameters);
302302
}
303303

304-
} // namespace
305-
306-
connector::hive::HiveColumnHandle::ColumnType toHiveColumnType(
307-
protocol::hive::ColumnType type) {
308-
switch (type) {
309-
case protocol::hive::ColumnType::PARTITION_KEY:
310-
return connector::hive::HiveColumnHandle::ColumnType::kPartitionKey;
311-
case protocol::hive::ColumnType::REGULAR:
312-
return connector::hive::HiveColumnHandle::ColumnType::kRegular;
313-
case protocol::hive::ColumnType::SYNTHESIZED:
314-
return connector::hive::HiveColumnHandle::ColumnType::kSynthesized;
315-
default:
316-
VELOX_UNSUPPORTED(
317-
"Unsupported Hive column type: {}.", toJsonString(type));
318-
}
304+
dwio::common::FileFormat toVeloxFileFormat(
305+
const presto::protocol::hive::StorageFormat& format) {
306+
if (format.inputFormat == "com.facebook.hive.orc.OrcInputFormat") {
307+
return dwio::common::FileFormat::DWRF;
308+
} else if (
309+
format.inputFormat == "org.apache.hadoop.hive.ql.io.orc.OrcInputFormat") {
310+
return dwio::common::FileFormat::ORC;
311+
} else if (
312+
format.inputFormat ==
313+
"org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat") {
314+
return dwio::common::FileFormat::PARQUET;
315+
} else if (format.inputFormat == "org.apache.hadoop.mapred.TextInputFormat") {
316+
if (format.serDe == "org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe") {
317+
return dwio::common::FileFormat::TEXT;
318+
} else if (format.serDe == "org.apache.hive.hcatalog.data.JsonSerDe") {
319+
return dwio::common::FileFormat::JSON;
320+
}
321+
} else if (
322+
format.inputFormat ==
323+
"org.apache.hadoop.hive.ql.io.SymlinkTextInputFormat") {
324+
if (format.serDe ==
325+
"org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe") {
326+
return dwio::common::FileFormat::PARQUET;
327+
}
328+
} else if (format.inputFormat == "com.facebook.alpha.AlphaInputFormat") {
329+
// ALPHA has been renamed in Velox to NIMBLE.
330+
return dwio::common::FileFormat::NIMBLE;
331+
}
332+
VELOX_UNSUPPORTED(
333+
"Unsupported file format: {} {}", format.inputFormat, format.serDe);
319334
}
320335

336+
} // namespace
337+
321338
std::unique_ptr<velox::connector::ConnectorSplit>
322339
HivePrestoToVeloxConnector::toVeloxSplit(
323340
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
@@ -14,7 +14,6 @@
1414

1515
#include "presto_cpp/main/connectors/IcebergPrestoToVeloxConnector.h"
1616
#include "presto_cpp/main/connectors/PrestoToVeloxConnectorUtils.h"
17-
#include "presto_cpp/main/connectors/HivePrestoToVeloxConnector.h"
1817

1918
#include "presto_cpp/presto_protocol/connector/iceberg/IcebergConnectorProtocol.h"
2019
#include "velox/connectors/hive/iceberg/IcebergDataSink.h"

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

Lines changed: 12 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -725,36 +725,19 @@ velox::common::CompressionKind toFileCompressionKind(
725725
}
726726
}
727727

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

760743
} // namespace facebook::presto

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#include "presto_cpp/main/types/PrestoToVeloxExpr.h"
1717
#include "presto_cpp/presto_protocol/connector/hive/presto_protocol_hive.h"
1818
#include "presto_cpp/presto_protocol/core/presto_protocol_core.h"
19+
#include "velox/connectors/hive/TableHandle.h"
1920
#include "velox/dwio/common/Options.h"
2021
#include "velox/type/Filter.h"
2122
#include "velox/type/Type.h"
@@ -45,7 +46,7 @@ std::vector<velox::common::Subfield> toRequiredSubfields(
4546
velox::common::CompressionKind toFileCompressionKind(
4647
const protocol::hive::HiveCompressionCodec& hiveCompressionCodec);
4748

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

5152
} // namespace facebook::presto

0 commit comments

Comments
 (0)