[ https://issues.apache.org/jira/browse/DRILL-7733?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17271934#comment-17271934 ]
ASF GitHub Bot commented on DRILL-7733: --------------------------------------- paul-rogers commented on pull request #2149: URL: https://github.com/apache/drill/pull/2149#issuecomment-767360757 @luocooong, thanks for the question. There are three advantages of using the Java rather than Joda time. First, Joda was originally written to extend the limited Java date/time classes. Most of the Joda functionality, however, was added to Java 8 and so Joda has been obsolete since Java 8. Drill no longer builds on Java 7, so the need for Joda no longer exists. (Except for the Joda `Period` class, which does not exist in Java for some reason.) The second reason had to due with the JSON writer used for streaming. I can't recall the details (this code was written 6+ months ago), but I think the underlying JSON classes used Java time, so I would either have to convert from Joda to Java on each value; or convert the column accessors to use Java. I chose the latter for the reasons above. The third reason is that the accessor (and other EVF classes) are visible to plugins. By using Joda, we force plugin developers to use obsolete libraries and to remember the differences between Joda and Java time classes, which is a nuisance. By using Java time, we reduce the burden on plugin developers somewhat. ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > Use streaming for REST JSON queries > ----------------------------------- > > Key: DRILL-7733 > URL: https://issues.apache.org/jira/browse/DRILL-7733 > Project: Apache Drill > Issue Type: Improvement > Affects Versions: 1.17.0 > Reporter: Paul Rogers > Assignee: Paul Rogers > Priority: Major > Fix For: 1.19.0 > > > Several uses on the user and dev mail lists have complained about the memory > overhead when running a REST JSON query: {{http:://node:8047/query.json}}. > The current implementation buffers the entire result set in memory, then lets > Jersey/Jetty convert the results to JSON. The result is very heavy heap use > for larger query result sets. > This ticket requests a change to use streaming. As each batch arrives at the > Screen operator, convert that batch to JSON and directly stream the results > to the client network connection, much as is done for the native client > connection. > For backward compatibility, the form of the JSON must be the same as the > current API. -- This message was sent by Atlassian Jira (v8.3.4#803005)