32 lines
1.3 KiB
Diff
32 lines
1.3 KiB
Diff
diff --git a/cpp/src/parquet/arrow/schema.cc b/cpp/src/parquet/arrow/schema.cc
|
|
index eb7fd628d..e61d5ac3d 100644
|
|
--- a/cpp/src/parquet/arrow/schema.cc
|
|
+++ b/cpp/src/parquet/arrow/schema.cc
|
|
@@ -542,10 +542,24 @@ Status MapToSchemaField(const GroupNode& group, LevelInfo current_levels,
|
|
return Status::Invalid("Key-value map node must have 1 or 2 child elements. Found: ",
|
|
key_value.field_count());
|
|
}
|
|
- const Node& key_node = *key_value.field(0);
|
|
- if (!key_node.is_required()) {
|
|
- return Status::Invalid("Map keys must be annotated as required.");
|
|
+ /*
|
|
+The map key generated by hive may be optional.
|
|
+
|
|
+required group field_id=-1 hive_schema {
|
|
+ optional int32 field_id=-1 col_int;
|
|
+ optional group field_id=-1 col_map (Map) {
|
|
+ repeated group field_id=-1 map (Map) {
|
|
+ optional byte_array field_id=-1 key (String);
|
|
+ optional byte_array field_id=-1 value (String);
|
|
+ }
|
|
}
|
|
+}
|
|
+
|
|
+const Node& key_node = *key_value.field(0);
|
|
+if (!key_node.is_required()) {
|
|
+ return Status::Invalid("Map keys must be annotated as required.");
|
|
+}
|
|
+*/
|
|
// Arrow doesn't support 1 column maps (i.e. Sets). The options are to either
|
|
// make the values column nullable, or process the map as a list. We choose the latter
|
|
// as it is simpler.
|