<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN" "http://forrest.apache.org/dtd/document-v20.dtd">

<document>
    <header>
        <title>Visual Editors</title>
    </header>
    <body>

        <!-- ====================================================================== -->
        <!-- v_editors-->
        <section id="zeppelin">
            <title>Running Pig in Apache Zeppelin</title>

            <p><a href="https://zeppelin.apache.org/">Apache Zeppelin</a> is a web-based notebook that enables interactive data analytics. Pig is supported as a backend interpreter in Zeppelin starting from version 0.7. </p>
            <p>User can do all the things in zeppelin as you do in grunt shell. Besides, you can take advantage of Zeppelin's visualization feature to visualize the Pig output. Here's 2 links for how to configure Pig in Zeppelin and how to run Pig script in Zeppelin.</p>

            <ul>
                <li>
                    <a href="https://zeppelin.apache.org/docs/latest/interpreter/pig.html">https://zeppelin.apache.org/docs/latest/interpreter/pig.html</a>
                </li>
                <li>
                    <a href="https://cwiki.apache.org/confluence/display/ZEPPELIN/Running+Pig+in+Apache+Zeppelin">https://cwiki.apache.org/confluence/display/ZEPPELIN/Running+Pig+in+Apache+Zeppelin</a>
                </li>
            </ul>

            <p><strong>Screenshot of running Pig in Zeppelin</strong> </p>
            <p><img alt="Pig in zeppelin" src="images/pig_zeppelin.png" title="Pig in zeppelin"></img></p>

        </section>
    </body>
</document>