{"action":"created","issue":{"url":"https://api.github.com/repos/apache/spark/issues/14753","repository_url":"https://api.github.com/repos/apache/spark","labels_url":"https://api.github.com/repos/apache/spark/issues/14753/labels{/name}","comments_url":"https://api.github.com/repos/apache/spark/issues/14753/comments","events_url":"https://api.github.com/repos/apache/spark/issues/14753/events","html_url":"https://github.com/apache/spark/pull/14753","id":172485370,"number":14753,"title":"[SPARK-17187][SQL] Supports using arbitrary Java object as internal aggregation buffer object","user":{"login":"clockfly","id":2595532,"avatar_url":"https://avatars.githubusercontent.com/u/2595532?v=3","gravatar_id":"","url":"https://api.github.com/users/clockfly","html_url":"https://github.com/clockfly","followers_url":"https://api.github.com/users/clockfly/followers","following_url":"https://api.github.com/users/clockfly/following{/other_user}","gists_url":"https://api.github.com/users/clockfly/gists{/gist_id}","starred_url":"https://api.github.com/users/clockfly/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/clockfly/subscriptions","organizations_url":"https://api.github.com/users/clockfly/orgs","repos_url":"https://api.github.com/users/clockfly/repos","events_url":"https://api.github.com/users/clockfly/events{/privacy}","received_events_url":"https://api.github.com/users/clockfly/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":23,"created_at":"2016-08-22T15:40:46Z","updated_at":"2016-08-25T17:42:36Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/apache/spark/pulls/14753","html_url":"https://github.com/apache/spark/pull/14753","diff_url":"https://github.com/apache/spark/pull/14753.diff","patch_url":"https://github.com/apache/spark/pull/14753.patch"},"body":"## What changes were proposed in this pull request?\r\n\r\nThis PR introduces an abstract class `TypedImperativeAggregate` so that an aggregation function of TypedImperativeAggregate can use  **arbitrary** user-defined Java object as intermediate aggregation buffer object.\r\n\r\n**This has advantages like:**\r\n1. It now can support larger category of aggregation functions. For example, it will be much easier to implement aggregation function `percentile_approx`, which has a complex aggregation buffer definition.\r\n2. It can be used to avoid doing serialization/de-serialization for every call of `update` or `merge` when converting domain specific aggregation object to internal Spark-Sql storage format.\r\n3. It is easier to integrate with other existing monoid libraries like algebird, and supports more aggregation functions with high performance. \r\n\r\nPlease see `org.apache.spark.sql.TypedImperativeAggregateSuite.TypedMaxAggregate` to find an example of how to defined a `TypedImperativeAggregate` aggregation function.\r\nPlease see Java doc of `TypedImperativeAggregate` and Jira ticket SPARK-17187 for more information.\r\n\r\n## How was this patch tested?\r\n\r\nUnit tests.\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/apache/spark/issues/comments/242477518","html_url":"https://github.com/apache/spark/pull/14753#issuecomment-242477518","issue_url":"https://api.github.com/repos/apache/spark/issues/14753","id":242477518,"user":{"login":"AmplabJenkins","id":4031291,"avatar_url":"https://avatars.githubusercontent.com/u/4031291?v=3","gravatar_id":"","url":"https://api.github.com/users/AmplabJenkins","html_url":"https://github.com/AmplabJenkins","followers_url":"https://api.github.com/users/AmplabJenkins/followers","following_url":"https://api.github.com/users/AmplabJenkins/following{/other_user}","gists_url":"https://api.github.com/users/AmplabJenkins/gists{/gist_id}","starred_url":"https://api.github.com/users/AmplabJenkins/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AmplabJenkins/subscriptions","organizations_url":"https://api.github.com/users/AmplabJenkins/orgs","repos_url":"https://api.github.com/users/AmplabJenkins/repos","events_url":"https://api.github.com/users/AmplabJenkins/events{/privacy}","received_events_url":"https://api.github.com/users/AmplabJenkins/received_events","type":"User","site_admin":false},"created_at":"2016-08-25T17:42:36Z","updated_at":"2016-08-25T17:42:36Z","body":"Test PASSed.\nRefer to this link for build results (access rights to CI server needed): \nhttps://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/64426/\nTest PASSed."}}
{"actor":{"display_login":"AmplabJenkins"}}