Below test case worked before 21.4. It seems there's parsing issue with all Map columns using Integer as key.
```sql
set allow_experimental_map_type = 1;
CREATE TABLE IF NOT EXISTS test_maps(ma Map(Integer, Array(String)), mi Map(Integer, Integer), ms Map(String, String)) ENGINE = Memory;
-- Exception on client:
-- Code: 62. DB::Exception: Cannot parse expression of type Map(Int32,Array(String)) here: {1:['11','12'],2:['22','23']},{1:11,2:22},{'k1':'v1','k2':'v2'}): data for INSERT was parsed from query
insert into test_maps values ({1:['11','12'],2:['22','23']},{1:11,2:22},{'k1':'v1','k2':'v2'});
```

Just tried 21.6 and it's still the same:
```sql
:) create table if not exists test_map_with_int_key(m Map(UInt32, UInt32)) engine = Memory;
...
:) SELECT CAST(([1, 2], [11, 22]), 'Map(UInt32, UInt32)') AS m;

SELECT CAST(([1, 2], [11, 22]), 'Map(UInt32, UInt32)') AS m

Query id: dbe47185-bc24-488b-a85d-761616e3199d

┌─m───────────┐
│ {1:11,2:22} │
└─────────────┘
:) insert into test_map_with_int_key SELECT CAST(([1, 2], [11, 22]), 'Map(UInt32, UInt32)') as m

INSERT INTO test_map_with_int_key SELECT CAST(([1, 2], [11, 22]), 'Map(UInt32, UInt32)') AS m

Query id: 6877901f-1518-48f9-ba65-d54ed7326388

Ok.
:) insert into test_map_with_int_key values({1:11,2:22})

INSERT INTO test_map_with_in_key VALUES

Query id: 3f6cae42-064a-467f-baae-b7f323e910c0


0 rows in set. Elapsed: 0.004 sec.

Received exception from server (version 21.6.3):
Code: 60. DB::Exception: Received from localhost:9000. DB::Exception: Table default.test_map_with_in_key doesn't exist.
```

P.S. I'll submit PRs for integration test this week so that we can spot this kind of issue early.
{
    return std::make_shared<SerializationMap>(
        key_type->getDefaultSerialization(),
        value_type->getDefaultSerialization(),
        nested->getDefaultSerialization());
}
bool DataTypeMap::equals(const IDataType & rhs) const
{
    if (typeid(rhs) != typeid(*this))
        return false;
    const DataTypeMap & rhs_map = static_cast<const DataTypeMap &>(rhs);
    return nested->equals(*rhs_map.nested);
}
static DataTypePtr create(const ASTPtr & arguments)
{
    if (!arguments || arguments->children.size() != 2)
        throw Exception("Map data type family must have two arguments: key and value types", ErrorCodes::NUMBER_OF_ARGUMENTS_DOESNT_MATCH);
    DataTypes nested_types;
    nested_types.reserve(arguments->children.size());
    for (const ASTPtr & child : arguments->children)
        nested_types.emplace_back(DataTypeFactory::instance().get(child));
    return std::make_shared<DataTypeMap>(nested_types);
}
void registerDataTypeMap(DataTypeFactory & factory)
{
    factory.registerDataType("Map", create);
}
}