Github user paul-rogers commented on the issue:
https://github.com/apache/drill/pull/1184
One additional note. We noted that JDBC does not support the idea of a
nested tuple (a Drill "map".) JDBC does support columns that return a Java
object. To bridge the gap, Drill returns a Map column as a Java object.
But, why a JSON object? The answer seems to lie with the `sqline` program.
If we query a one-line JSON file with a nested object in `sqlline`, we get the
following display:
```
SELECT * FROM `json/nested.json`;
+---------+----------------------------------+
| custId | name |
+---------+----------------------------------+
| 101 | {"first":"John","last":"Smith"} |
+---------+----------------------------------+
```
So, it seems likely that the the value of a Map object was translated to a
JSON object so that when `sqlline` calls `toString()` on it, it ends up
formatted nicely as above.
Because of this, it may be hard to change the kind of objects returned from
JDBC for a Map column.
---