{"action":"created","comment":{"url":"https://api.github.com/repos/apache/incubator-zeppelin/pulls/comments/61179320","id":61179320,"diff_hunk":"@@ -0,0 +1,364 @@\n+/*\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\n+ * contributor license agreements.  See the NOTICE file distributed with\n+ * this work for additional information regarding copyright ownership.\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\n+ * (the \"License\"); you may not use this file except in compliance with\n+ * the License.  You may obtain a copy of the License at\n+ *\n+ *    http://www.apache.org/licenses/LICENSE-2.0\n+ *\n+ * Unless required by applicable law or agreed to in writing, software\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n+ * See the License for the specific language governing permissions and\n+ * limitations under the License.\n+ */\n+\n+package org.apache.zeppelin.livy;\n+\n+import com.google.gson.Gson;\n+import com.google.gson.GsonBuilder;\n+import com.google.gson.reflect.TypeToken;\n+import org.apache.commons.lang3.StringUtils;\n+import org.apache.http.HttpResponse;\n+import org.apache.http.client.HttpClient;\n+import org.apache.http.client.methods.HttpDelete;\n+import org.apache.http.client.methods.HttpGet;\n+import org.apache.http.client.methods.HttpPost;\n+import org.apache.http.entity.StringEntity;\n+import org.apache.http.impl.client.HttpClientBuilder;\n+import org.apache.zeppelin.interpreter.InterpreterContext;\n+import org.apache.zeppelin.interpreter.InterpreterResult;\n+import org.apache.zeppelin.interpreter.InterpreterResult.Code;\n+import org.apache.zeppelin.interpreter.InterpreterUtils;\n+import org.slf4j.Logger;\n+import org.slf4j.LoggerFactory;\n+\n+import java.io.BufferedReader;\n+import java.io.InputStreamReader;\n+import java.nio.charset.Charset;\n+import java.util.ArrayList;\n+import java.util.HashMap;\n+import java.util.Map;\n+import java.util.Properties;\n+\n+\n+/***\n+ * Livy helper class\n+ */\n+public class LivyHelper {\n+  Logger LOGGER = LoggerFactory.getLogger(LivyHelper.class);\n+  Gson gson = new GsonBuilder().setPrettyPrinting().create();\n+  HashMap<String, Object> paragraphHttpMap = new HashMap<>();\n+  Properties property;\n+\n+  LivyHelper(Properties property) {\n+    this.property = property;\n+  }\n+\n+  public Integer createSession(InterpreterContext context, String kind) throws Exception {\n+    try {\n+      String json = executeHTTP(property.getProperty(\"zeppelin.livy.url\") + \"/sessions\",\n+          \"POST\",\n+          \"{\\\"kind\\\": \\\"\" + kind + \"\\\", \\\"proxyUser\\\": \\\"\"\n+              + context.getAuthenticationInfo().getUser() + \"\\\"}\",\n+          context.getParagraphId()\n+      );\n+      Map jsonMap = (Map<Object, Object>) gson.fromJson(json,\n+          new TypeToken<Map<Object, Object>>() {\n+          }.getType());\n+      Integer sessionId = ((Double) jsonMap.get(\"id\")).intValue();\n+      if (!jsonMap.get(\"state\").equals(\"idle\")) {\n+        while (true) {\n+          LOGGER.error(String.format(\"sessionId:%s state is %s\",\n+              jsonMap.get(\"id\"), jsonMap.get(\"state\")));\n+          Thread.sleep(1000);\n+          json = executeHTTP(property.getProperty(\"zeppelin.livy.url\") + \"/sessions/\" + sessionId,\n+              \"GET\", null,\n+              context.getParagraphId());\n+          jsonMap = (Map<Object, Object>) gson.fromJson(json,\n+              new TypeToken<Map<Object, Object>>() {\n+              }.getType());\n+          if (jsonMap.get(\"state\").equals(\"idle\")) {\n+            break;\n+          } else if (jsonMap.get(\"state\").equals(\"error\")) {\n+            json = executeHTTP(property.getProperty(\"zeppelin.livy.url\") + \"/sessions/\" +\n+                    sessionId + \"/log\",\n+                \"GET\", null,\n+                context.getParagraphId());\n+            jsonMap = (Map<Object, Object>) gson.fromJson(json,\n+                new TypeToken<Map<Object, Object>>() {\n+                }.getType());\n+            String logs = StringUtils.join((ArrayList<String>) jsonMap.get(\"log\"), '\\n');\n+            LOGGER.error(String.format(\"Cannot start  %s.\\n%s\", kind, logs));\n+            throw new Exception(String.format(\"Cannot start  %s.\\n%s\", kind, logs));\n+          }\n+        }\n+      }\n+      return sessionId;\n+    } catch (Exception e) {\n+      LOGGER.error(\"Error getting session for user\", e);\n+      throw e;\n+    }\n+  }\n+\n+  protected void initializeSpark(final InterpreterContext context,\n+                                 final Map<String, Integer> userSessionMap) throws Exception {\n+    interpret(\"val sqlContext= new org.apache.spark.sql.SQLContext(sc)\\n\" +\n+        \"import sqlContext.implicits._\", context, userSessionMap);","path":"livy/src/main/java/org/apache/zeppelin/livy/LivyHelper.java","position":109,"original_position":109,"commit_id":"9be64e09e892fc6d6ba6c35acb19d24da997fb1b","original_commit_id":"9be64e09e892fc6d6ba6c35acb19d24da997fb1b","user":{"login":"felixcheung","id":8969467,"avatar_url":"https://avatars.githubusercontent.com/u/8969467?v=3","gravatar_id":"","url":"https://api.github.com/users/felixcheung","html_url":"https://github.com/felixcheung","followers_url":"https://api.github.com/users/felixcheung/followers","following_url":"https://api.github.com/users/felixcheung/following{/other_user}","gists_url":"https://api.github.com/users/felixcheung/gists{/gist_id}","starred_url":"https://api.github.com/users/felixcheung/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/felixcheung/subscriptions","organizations_url":"https://api.github.com/users/felixcheung/orgs","repos_url":"https://api.github.com/users/felixcheung/repos","events_url":"https://api.github.com/users/felixcheung/events{/privacy}","received_events_url":"https://api.github.com/users/felixcheung/received_events","type":"User","site_admin":false},"body":"I thought this \r\n`org.apache.spark.sql` or\r\n`import sqlContext.implicits._`\r\nonly works on newer version of spark (post 1.3 I think) - should we just say only new versions are supported?","created_at":"2016-04-26T23:01:15Z","updated_at":"2016-04-26T23:01:15Z","html_url":"https://github.com/apache/incubator-zeppelin/pull/827#discussion_r61179320","pull_request_url":"https://api.github.com/repos/apache/incubator-zeppelin/pulls/827","_links":{"self":{"href":"https://api.github.com/repos/apache/incubator-zeppelin/pulls/comments/61179320"},"html":{"href":"https://github.com/apache/incubator-zeppelin/pull/827#discussion_r61179320"},"pull_request":{"href":"https://api.github.com/repos/apache/incubator-zeppelin/pulls/827"}}},"pull_request":{"url":"https://api.github.com/repos/apache/incubator-zeppelin/pulls/827","id":65949496,"html_url":"https://github.com/apache/incubator-zeppelin/pull/827","diff_url":"https://github.com/apache/incubator-zeppelin/pull/827.diff","patch_url":"https://github.com/apache/incubator-zeppelin/pull/827.patch","issue_url":"https://api.github.com/repos/apache/incubator-zeppelin/issues/827","number":827,"state":"open","locked":false,"title":"ZEPPELIN-773 : Livy interperter","user":{"login":"prabhjyotsingh","id":674497,"avatar_url":"https://avatars.githubusercontent.com/u/674497?v=3","gravatar_id":"","url":"https://api.github.com/users/prabhjyotsingh","html_url":"https://github.com/prabhjyotsingh","followers_url":"https://api.github.com/users/prabhjyotsingh/followers","following_url":"https://api.github.com/users/prabhjyotsingh/following{/other_user}","gists_url":"https://api.github.com/users/prabhjyotsingh/gists{/gist_id}","starred_url":"https://api.github.com/users/prabhjyotsingh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/prabhjyotsingh/subscriptions","organizations_url":"https://api.github.com/users/prabhjyotsingh/orgs","repos_url":"https://api.github.com/users/prabhjyotsingh/repos","events_url":"https://api.github.com/users/prabhjyotsingh/events{/privacy}","received_events_url":"https://api.github.com/users/prabhjyotsingh/received_events","type":"User","site_admin":false},"body":"### What is this PR for?\r\nAs Zeppelin evolves its notebook, for large scale data analysis, multiple zeppelin users are expected to use and connect to the same set of data repositories within an enterprise. Since Zeppelin notebooks could affect data, state and its lineage, it is important to have separation of users, provide them with appropriate sandboxes, in addition to capturing the right audit details. Further, the IT within the organization would prefer to support fewer Zeppelin instances (preferably one) to support its customers. Therefore, the objectives of creating a multi-tenant zeppelin are:\r\n●\tSupporting workloads of multiple customers\r\n●\tSupporting multiple LOBs (lines of business), on a single data systems\r\n●\tSupport fine grained audits\r\nAs a natural evolution of Zeppelin Authentication and Authorization design, partly user awareness in downstream data systems such as Spark/Hive and others, is essential to achieve the above stated objectives.\r\n\r\n\r\n### What type of PR is it?\r\nFeature\r\n\r\n### Todos\r\n* [x] - Test case\r\n* [ ] - Review Comments\r\n* [x] - Documentation\r\n\r\n### What is the Jira issue?\r\nZEPPELIN-773\r\n\r\n### How should this be tested?\r\n - Install Livy by following steps on https://github.com/cloudera/livy\r\n - Start the Livy server\r\n - Now by using Zeppelin-Livy interpreter, run any of the spark, pyspark or R commands.\r\n\r\n### Screenshots (if appropriate)\r\n<img width=\"1436\" alt=\"screen shot 2016-04-11 at 12 41 35 pm\" src=\"https://cloud.githubusercontent.com/assets/674497/14419479/b514979c-ffe3-11e5-9dea-df9854d8409c.png\">\r\n\r\n\r\n<img width=\"1434\" alt=\"screen shot 2016-04-11 at 12 41 59 pm\" src=\"https://cloud.githubusercontent.com/assets/674497/14419478/b514922e-ffe3-11e5-9c98-93c5b99de106.png\">\r\n\r\n\r\n<img width=\"1440\" alt=\"screen shot 2016-04-11 at 12 48 13 pm\" src=\"https://cloud.githubusercontent.com/assets/674497/14419480/b515d8c8-ffe3-11e5-8c20-4c988c621f51.png\">\r\n\r\n\r\n### Questions:\r\n* Does the licenses files need update? n/a\r\n* Is there breaking changes for older versions? n/a\r\n* Does this needs documentation? yes\r\n","created_at":"2016-04-11T07:20:03Z","updated_at":"2016-04-26T23:01:15Z","closed_at":null,"merged_at":null,"merge_commit_sha":"24097765fb4b76a4fc72bd2b6177957b0de332b7","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/apache/incubator-zeppelin/pulls/827/commits","review_comments_url":"https://api.github.com/repos/apache/incubator-zeppelin/pulls/827/comments","review_comment_url":"https://api.github.com/repos/apache/incubator-zeppelin/pulls/comments{/number}","comments_url":"https://api.github.com/repos/apache/incubator-zeppelin/issues/827/comments","statuses_url":"https://api.github.com/repos/apache/incubator-zeppelin/statuses/9be64e09e892fc6d6ba6c35acb19d24da997fb1b","head":{"label":"prabhjyotsingh:livyInterperter","ref":"livyInterperter","sha":"9be64e09e892fc6d6ba6c35acb19d24da997fb1b","user":{"login":"prabhjyotsingh","id":674497,"avatar_url":"https://avatars.githubusercontent.com/u/674497?v=3","gravatar_id":"","url":"https://api.github.com/users/prabhjyotsingh","html_url":"https://github.com/prabhjyotsingh","followers_url":"https://api.github.com/users/prabhjyotsingh/followers","following_url":"https://api.github.com/users/prabhjyotsingh/following{/other_user}","gists_url":"https://api.github.com/users/prabhjyotsingh/gists{/gist_id}","starred_url":"https://api.github.com/users/prabhjyotsingh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/prabhjyotsingh/subscriptions","organizations_url":"https://api.github.com/users/prabhjyotsingh/orgs","repos_url":"https://api.github.com/users/prabhjyotsingh/repos","events_url":"https://api.github.com/users/prabhjyotsingh/events{/privacy}","received_events_url":"https://api.github.com/users/prabhjyotsingh/received_events","type":"User","site_admin":false},"repo":{"id":44664903,"name":"incubator-zeppelin","full_name":"prabhjyotsingh/incubator-zeppelin","owner":{"login":"prabhjyotsingh","id":674497,"avatar_url":"https://avatars.githubusercontent.com/u/674497?v=3","gravatar_id":"","url":"https://api.github.com/users/prabhjyotsingh","html_url":"https://github.com/prabhjyotsingh","followers_url":"https://api.github.com/users/prabhjyotsingh/followers","following_url":"https://api.github.com/users/prabhjyotsingh/following{/other_user}","gists_url":"https://api.github.com/users/prabhjyotsingh/gists{/gist_id}","starred_url":"https://api.github.com/users/prabhjyotsingh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/prabhjyotsingh/subscriptions","organizations_url":"https://api.github.com/users/prabhjyotsingh/orgs","repos_url":"https://api.github.com/users/prabhjyotsingh/repos","events_url":"https://api.github.com/users/prabhjyotsingh/events{/privacy}","received_events_url":"https://api.github.com/users/prabhjyotsingh/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/prabhjyotsingh/incubator-zeppelin","description":"Mirror of Apache Zeppelin (Incubating)","fork":true,"url":"https://api.github.com/repos/prabhjyotsingh/incubator-zeppelin","forks_url":"https://api.github.com/repos/prabhjyotsingh/incubator-zeppelin/forks","keys_url":"https://api.github.com/repos/prabhjyotsingh/incubator-zeppelin/keys{/key_id}","collaborators_url":"https://api.github.com/repos/prabhjyotsingh/incubator-zeppelin/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/prabhjyotsingh/incubator-zeppelin/teams","hooks_url":"https://api.github.com/repos/prabhjyotsingh/incubator-zeppelin/hooks","issue_events_url":"https://api.github.com/repos/prabhjyotsingh/incubator-zeppelin/issues/events{/number}","events_url":"https://api.github.com/repos/prabhjyotsingh/incubator-zeppelin/events","assignees_url":"https://api.github.com/repos/prabhjyotsingh/incubator-zeppelin/assignees{/user}","branches_url":"https://api.github.com/repos/prabhjyotsingh/incubator-zeppelin/branches{/branch}","tags_url":"https://api.github.com/repos/prabhjyotsingh/incubator-zeppelin/tags","blobs_url":"https://api.github.com/repos/prabhjyotsingh/incubator-zeppelin/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/prabhjyotsingh/incubator-zeppelin/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/prabhjyotsingh/incubator-zeppelin/git/refs{/sha}","trees_url":"https://api.github.com/repos/prabhjyotsingh/incubator-zeppelin/git/trees{/sha}","statuses_url":"https://api.github.com/repos/prabhjyotsingh/incubator-zeppelin/statuses/{sha}","languages_url":"https://api.github.com/repos/prabhjyotsingh/incubator-zeppelin/languages","stargazers_url":"https://api.github.com/repos/prabhjyotsingh/incubator-zeppelin/stargazers","contributors_url":"https://api.github.com/repos/prabhjyotsingh/incubator-zeppelin/contributors","subscribers_url":"https://api.github.com/repos/prabhjyotsingh/incubator-zeppelin/subscribers","subscription_url":"https://api.github.com/repos/prabhjyotsingh/incubator-zeppelin/subscription","commits_url":"https://api.github.com/repos/prabhjyotsingh/incubator-zeppelin/commits{/sha}","git_commits_url":"https://api.github.com/repos/prabhjyotsingh/incubator-zeppelin/git/commits{/sha}","comments_url":"https://api.github.com/repos/prabhjyotsingh/incubator-zeppelin/comments{/number}","issue_comment_url":"https://api.github.com/repos/prabhjyotsingh/incubator-zeppelin/issues/comments{/number}","contents_url":"https://api.github.com/repos/prabhjyotsingh/incubator-zeppelin/contents/{+path}","compare_url":"https://api.github.com/repos/prabhjyotsingh/incubator-zeppelin/compare/{base}...{head}","merges_url":"https://api.github.com/repos/prabhjyotsingh/incubator-zeppelin/merges","archive_url":"https://api.github.com/repos/prabhjyotsingh/incubator-zeppelin/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/prabhjyotsingh/incubator-zeppelin/downloads","issues_url":"https://api.github.com/repos/prabhjyotsingh/incubator-zeppelin/issues{/number}","pulls_url":"https://api.github.com/repos/prabhjyotsingh/incubator-zeppelin/pulls{/number}","milestones_url":"https://api.github.com/repos/prabhjyotsingh/incubator-zeppelin/milestones{/number}","notifications_url":"https://api.github.com/repos/prabhjyotsingh/incubator-zeppelin/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/prabhjyotsingh/incubator-zeppelin/labels{/name}","releases_url":"https://api.github.com/repos/prabhjyotsingh/incubator-zeppelin/releases{/id}","deployments_url":"https://api.github.com/repos/prabhjyotsingh/incubator-zeppelin/deployments","created_at":"2015-10-21T09:09:14Z","updated_at":"2016-01-11T06:39:40Z","pushed_at":"2016-04-26T11:52:25Z","git_url":"git://github.com/prabhjyotsingh/incubator-zeppelin.git","ssh_url":"git@github.com:prabhjyotsingh/incubator-zeppelin.git","clone_url":"https://github.com/prabhjyotsingh/incubator-zeppelin.git","svn_url":"https://github.com/prabhjyotsingh/incubator-zeppelin","homepage":null,"size":34555,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"apache:master","ref":"master","sha":"a6c8b5fcbeb42ca428a08b0be192acba6683d0a0","user":{"login":"apache","id":47359,"avatar_url":"https://avatars.githubusercontent.com/u/47359?v=3","gravatar_id":"","url":"https://api.github.com/users/apache","html_url":"https://github.com/apache","followers_url":"https://api.github.com/users/apache/followers","following_url":"https://api.github.com/users/apache/following{/other_user}","gists_url":"https://api.github.com/users/apache/gists{/gist_id}","starred_url":"https://api.github.com/users/apache/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/apache/subscriptions","organizations_url":"https://api.github.com/users/apache/orgs","repos_url":"https://api.github.com/users/apache/repos","events_url":"https://api.github.com/users/apache/events{/privacy}","received_events_url":"https://api.github.com/users/apache/received_events","type":"Organization","site_admin":false},"repo":{"id":32848140,"name":"incubator-zeppelin","full_name":"apache/incubator-zeppelin","owner":{"login":"apache","id":47359,"avatar_url":"https://avatars.githubusercontent.com/u/47359?v=3","gravatar_id":"","url":"https://api.github.com/users/apache","html_url":"https://github.com/apache","followers_url":"https://api.github.com/users/apache/followers","following_url":"https://api.github.com/users/apache/following{/other_user}","gists_url":"https://api.github.com/users/apache/gists{/gist_id}","starred_url":"https://api.github.com/users/apache/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/apache/subscriptions","organizations_url":"https://api.github.com/users/apache/orgs","repos_url":"https://api.github.com/users/apache/repos","events_url":"https://api.github.com/users/apache/events{/privacy}","received_events_url":"https://api.github.com/users/apache/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/apache/incubator-zeppelin","description":"Mirror of Apache Zeppelin (Incubating)","fork":false,"url":"https://api.github.com/repos/apache/incubator-zeppelin","forks_url":"https://api.github.com/repos/apache/incubator-zeppelin/forks","keys_url":"https://api.github.com/repos/apache/incubator-zeppelin/keys{/key_id}","collaborators_url":"https://api.github.com/repos/apache/incubator-zeppelin/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/apache/incubator-zeppelin/teams","hooks_url":"https://api.github.com/repos/apache/incubator-zeppelin/hooks","issue_events_url":"https://api.github.com/repos/apache/incubator-zeppelin/issues/events{/number}","events_url":"https://api.github.com/repos/apache/incubator-zeppelin/events","assignees_url":"https://api.github.com/repos/apache/incubator-zeppelin/assignees{/user}","branches_url":"https://api.github.com/repos/apache/incubator-zeppelin/branches{/branch}","tags_url":"https://api.github.com/repos/apache/incubator-zeppelin/tags","blobs_url":"https://api.github.com/repos/apache/incubator-zeppelin/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/apache/incubator-zeppelin/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/apache/incubator-zeppelin/git/refs{/sha}","trees_url":"https://api.github.com/repos/apache/incubator-zeppelin/git/trees{/sha}","statuses_url":"https://api.github.com/repos/apache/incubator-zeppelin/statuses/{sha}","languages_url":"https://api.github.com/repos/apache/incubator-zeppelin/languages","stargazers_url":"https://api.github.com/repos/apache/incubator-zeppelin/stargazers","contributors_url":"https://api.github.com/repos/apache/incubator-zeppelin/contributors","subscribers_url":"https://api.github.com/repos/apache/incubator-zeppelin/subscribers","subscription_url":"https://api.github.com/repos/apache/incubator-zeppelin/subscription","commits_url":"https://api.github.com/repos/apache/incubator-zeppelin/commits{/sha}","git_commits_url":"https://api.github.com/repos/apache/incubator-zeppelin/git/commits{/sha}","comments_url":"https://api.github.com/repos/apache/incubator-zeppelin/comments{/number}","issue_comment_url":"https://api.github.com/repos/apache/incubator-zeppelin/issues/comments{/number}","contents_url":"https://api.github.com/repos/apache/incubator-zeppelin/contents/{+path}","compare_url":"https://api.github.com/repos/apache/incubator-zeppelin/compare/{base}...{head}","merges_url":"https://api.github.com/repos/apache/incubator-zeppelin/merges","archive_url":"https://api.github.com/repos/apache/incubator-zeppelin/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/apache/incubator-zeppelin/downloads","issues_url":"https://api.github.com/repos/apache/incubator-zeppelin/issues{/number}","pulls_url":"https://api.github.com/repos/apache/incubator-zeppelin/pulls{/number}","milestones_url":"https://api.github.com/repos/apache/incubator-zeppelin/milestones{/number}","notifications_url":"https://api.github.com/repos/apache/incubator-zeppelin/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/apache/incubator-zeppelin/labels{/name}","releases_url":"https://api.github.com/repos/apache/incubator-zeppelin/releases{/id}","deployments_url":"https://api.github.com/repos/apache/incubator-zeppelin/deployments","created_at":"2015-03-25T07:00:06Z","updated_at":"2016-04-26T21:29:17Z","pushed_at":"2016-04-26T22:22:05Z","git_url":"git://github.com/apache/incubator-zeppelin.git","ssh_url":"git@github.com:apache/incubator-zeppelin.git","clone_url":"https://github.com/apache/incubator-zeppelin.git","svn_url":"https://github.com/apache/incubator-zeppelin","homepage":null,"size":97787,"stargazers_count":1403,"watchers_count":1403,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":688,"mirror_url":"git://git.apache.org/incubator-zeppelin.git","open_issues_count":93,"forks":688,"open_issues":93,"watchers":1403,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/apache/incubator-zeppelin/pulls/827"},"html":{"href":"https://github.com/apache/incubator-zeppelin/pull/827"},"issue":{"href":"https://api.github.com/repos/apache/incubator-zeppelin/issues/827"},"comments":{"href":"https://api.github.com/repos/apache/incubator-zeppelin/issues/827/comments"},"review_comments":{"href":"https://api.github.com/repos/apache/incubator-zeppelin/pulls/827/comments"},"review_comment":{"href":"https://api.github.com/repos/apache/incubator-zeppelin/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/apache/incubator-zeppelin/pulls/827/commits"},"statuses":{"href":"https://api.github.com/repos/apache/incubator-zeppelin/statuses/9be64e09e892fc6d6ba6c35acb19d24da997fb1b"}}}}