diff --git a/.github/workflows/dockerhub-deploy.yml b/.github/workflows/dockerhub-deploy.yml new file mode 100644 index 0000000000..a62979082e --- /dev/null +++ b/.github/workflows/dockerhub-deploy.yml @@ -0,0 +1,117 @@ +name: Deploy to Docker Hub +on: [push, pull_request, workflow_dispatch] +jobs: + + base-jdk: + + runs-on: ubuntu-latest + + steps: + - name: Check Out Repo + uses: actions/checkout@v3 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v2 + + - name: Login to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + + - name: Build and push image + uses: docker/build-push-action@v4 + with: + context: . + file: docker/base-jdk.dockerfile + tags: kartikeyhadiya/base-jdk:latest + push: ${{ github.event_name != 'pull_request' }} + + spark-base-jupyterlab: + + runs-on: ubuntu-latest + + needs: base-jdk + + strategy: + fail-fast: false + matrix: + image: [spark-base, spark-sedona-jupyterlab/sedona_jupyterlab] + + steps: + - name: Check Out Repo + uses: actions/checkout@v3 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v2 + + - name: Login to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + + - name: Get branch names + id: branch-name + uses: tj-actions/branch-names@v7 + + - name: Sets env vars for image_tag + run: | + IMAGE_TAG=${{ steps.branch-name.outputs.tag }} + ! [[ "$IMAGE_TAG" ]] && IMAGE_TAG=${{ steps.branch-name.outputs.current_branch }} + [[ "$IMAGE_TAG" =~ ^(master|main)$ ]] && IMAGE_TAG=latest + image=`echo ${{ matrix.image }} | cut -d '/' -f 2` + [[ ${{ matrix.image }} == "spark-base" ]] && tag=3.3.2 || tag=$IMAGE_TAG + echo "DOCKER_IMAGE_TAG=kartikeyhadiya/$image:$tag" >> $GITHUB_ENV + + - name: Build and push image + uses: docker/build-push-action@v4 + with: + context: . + file: docker/${{ matrix.image }}.dockerfile + tags: ${{ env.DOCKER_IMAGE_TAG }} + push: ${{ github.event_name != 'pull_request' }} + + master_worker: + + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + image: [spark-master, spark-worker] + + needs: spark-base-jupyterlab + steps: + + - name: Check Out Repo + uses: actions/checkout@v3 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v2 + + - name: Login to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + + - name: Build and push image + uses: docker/build-push-action@v4 + with: + context: . + file: docker/${{ matrix.image }}.dockerfile + tags: kartikeyhadiya/${{ matrix.image }}:3.3.2 + push: ${{ github.event_name != 'pull_request' }} diff --git a/docker/base-jdk.dockerfile b/docker/base-jdk.dockerfile new file mode 100644 index 0000000000..cb9f234f57 --- /dev/null +++ b/docker/base-jdk.dockerfile @@ -0,0 +1,45 @@ +# +# 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. +# + +ARG debian_buster_image_tag=8-jre-slim +FROM openjdk:${debian_buster_image_tag} + +# -- Layer: OS + Python + +ARG shared_workspace=/opt/workspace +ARG python_version=3.7.12 + +RUN mkdir -p ${shared_workspace} && \ + apt-get update -y && \ + apt install -y curl gcc &&\ + apt install -y build-essential zlib1g-dev libncurses5-dev && \ + apt install -y libsqlite3-dev && \ + apt install -y libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget libjpeg-dev && \ + rm -rf /var/lib/apt/lists/* +RUN cd /usr/bin && \ + curl -O https://www.python.org/ftp/python/${python_version}/Python-${python_version}.tar.xz && \ + tar -xf Python-${python_version}.tar.xz && cd Python-${python_version} && ./configure --with-ensurepip=install && make -j 8 &&\ + ln -s /usr/bin/Python-${python_version}/python /usr/bin/python && \ + ln -s /usr/bin/Python-${python_version}/python /usr/bin/python3 && \ + rm -rf Python-${python_version}.tar.xz + +ENV SHARED_WORKSPACE=${shared_workspace} + +# -- Runtime + +VOLUME ${shared_workspace} +CMD ["bash"] \ No newline at end of file diff --git a/docker/spark-base.dockerfile b/docker/spark-base.dockerfile new file mode 100644 index 0000000000..25e885b092 --- /dev/null +++ b/docker/spark-base.dockerfile @@ -0,0 +1,52 @@ +# +# 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. +# + +FROM kartikeyhadiya/base-jdk + +# -- Layer: Apache Spark + +ARG spark_version=3.3.2 +ARG hadoop_version=3 +ARG sedona_version=1.4.0 +ARG geotools_wrapper_version=1.4.0-28.2 + +ENV SPARK_HOME /opt/spark +ENV SPARK_MASTER_HOST spark-master +ENV SPARK_MASTER_PORT 7077 +ENV PYTHONPATH=$SPARK_HOME/python +ENV PYSPARK_PYTHON python3 +ENV PYSPARK_DRIVER_PYTHON jupyter + +RUN apt-get update -y && \ + apt-get install -y curl && \ + curl https://archive.apache.org/dist/spark/spark-${spark_version}/spark-${spark_version}-bin-hadoop${hadoop_version}.tgz -o spark.tgz && \ + tar -xf spark.tgz && \ + mv spark-${spark_version}-bin-hadoop${hadoop_version} /opt/spark && \ + mkdir /opt/spark/logs && \ + rm spark.tgz && \ + # -- Copy sedona jars to Spark jars + curl https://dlcdn.apache.org/sedona/${sedona_version}/apache-sedona-${sedona_version}-bin.tar.gz -o sedona.tar.gz && \ + tar -xf sedona.tar.gz && \ + mv apache-sedona-${sedona_version}-bin/* /${SPARK_HOME}/jars/ && \ + rm -r apache-sedona-${sedona_version}-bin sedona.tar.gz && \ + # -- Copy geotools-wrapper jars to Spark jars + curl https://repo1.maven.org/maven2/org/datasyslab/geotools-wrapper/${geotools_wrapper_version}/geotools-wrapper-${geotools_wrapper_version}.jar -o geotools-wrapper-${geotools_wrapper_version}.jar && \ + mv geotools-wrapper-${geotools_wrapper_version}.jar /${SPARK_HOME}/jars/ + +# -- Runtime + +WORKDIR ${SPARK_HOME} \ No newline at end of file diff --git a/docker/spark-master.dockerfile b/docker/spark-master.dockerfile new file mode 100644 index 0000000000..10189e02c4 --- /dev/null +++ b/docker/spark-master.dockerfile @@ -0,0 +1,26 @@ +# +# 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. +# + +ARG spark_version=3.3.2 +FROM kartikeyhadiya/spark-base:${spark_version} + +# -- Runtime + +ARG spark_master_web_ui=8080 + +EXPOSE ${spark_master_web_ui} ${SPARK_MASTER_PORT} +CMD bin/spark-class org.apache.spark.deploy.master.Master >> logs/spark-master.out \ No newline at end of file diff --git a/docker/spark-sedona-jupyterlab/.dockerignore b/docker/spark-sedona-jupyterlab/.dockerignore new file mode 100644 index 0000000000..90b0504829 --- /dev/null +++ b/docker/spark-sedona-jupyterlab/.dockerignore @@ -0,0 +1,3 @@ +Dockerfile +compose.yml +README.md \ No newline at end of file diff --git a/docker/spark-sedona-jupyterlab/.gitignore b/docker/spark-sedona-jupyterlab/.gitignore new file mode 100644 index 0000000000..66f91c7a7e --- /dev/null +++ b/docker/spark-sedona-jupyterlab/.gitignore @@ -0,0 +1,6 @@ +commands.txt +docker-compose-orig.yml +Dockerfile.bak +log.txt +examples +.ipynb_checkpoints \ No newline at end of file diff --git a/docker/spark-sedona-jupyterlab/README.md b/docker/spark-sedona-jupyterlab/README.md new file mode 100644 index 0000000000..f3ade94bc0 --- /dev/null +++ b/docker/spark-sedona-jupyterlab/README.md @@ -0,0 +1,21 @@ +# sedona_jupyterlab_spark +Dockerfiles for apache sedona with JupyterLab and 1 spark master node and 2 worker node + +# Docker Image +kartikeyhadiya/sedona_jupyterlab:1.4.0 + +The image contains all the dependencies required for configuring Apache Sedona and JupyterLab. JupyterLab can be accessed at http://localhost:8888/ after pulling image. + +# Spark Configuration + - Master node can be accessed at port http://localhost:8080/ (spark://spark-master:7077). Refer link given in credit for more information. + - Spark-worker-1 can be accessed at port http://localhost:8081/. + - Spark-worker-2 can be accessed at port http://localhost:8082/. + +# How to build + - Clone the repository + - Run build.sh script. (If using WSL, use dos2unix command to convert line endings to unix format) + - Run docker-compose up + +# Requirements + - Docker + - Docker-compose \ No newline at end of file diff --git a/docker/spark-sedona-jupyterlab/build.sh b/docker/spark-sedona-jupyterlab/build.sh new file mode 100644 index 0000000000..e60ef8faab --- /dev/null +++ b/docker/spark-sedona-jupyterlab/build.sh @@ -0,0 +1,67 @@ +#!/bin/bash + +# +# 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. +# + +# -- Software Stack Version + +PYTHON_VERSION="3.9.17" +SPARK_VERSION="3.3.2" +HADOOP_VERSION="3" +SEDONA_VERSION="1.4.0" +GEOTOOLS_WRAPPER_VERSION="1.4.0-28.2" + +# -- Building the Images + +docker build \ + --no-cache \ + --build-arg python_version="${PYTHON_VERSION}" \ + -f docker/base-jdk.dockerfile \ + -t kartikeyhadiya/base-jdk:latest . + +docker build \ + --no-cache \ + --build-arg spark_version="${SPARK_VERSION}" \ + --build-arg hadoop_version="${HADOOP_VERSION}" \ + --build-arg sedona_version="${SEDONA_VERSION}" \ + --build-arg geotools_wrapper_version="${GEOTOOLS_WRAPPER_VERSION}" \ + -f docker/spark-base.dockerfile \ + -t kartikeyhadiya/spark-base:latest \ + -t kartikeyhadiya/spark-base:${SPARK_VERSION} . + +docker build \ + --no-cache \ + --build-arg spark_version="${SPARK_VERSION}" \ + -f docker/spark-master.dockerfile \ + -t kartikeyhadiya/spark-master:latest \ + -t kartikeyhadiya/spark-master:${SPARK_VERSION} . + +docker build \ + --no-cache \ + --build-arg spark_version="${SPARK_VERSION}" \ + -f docker/spark-worker.dockerfile \ + -t kartikeyhadiya/spark-worker:latest \ + -t kartikeyhadiya/spark-worker:${SPARK_VERSION} . + +docker build \ + --no-cache \ + --build-arg sedona_version="${SEDONA_VERSION}" \ + --build-arg geotools_wrapper_version="${GEOTOOLS_WRAPPER_VERSION}" \ + --build-arg python_version="${PYTHON_VERSION}" \ + -f docker/spark-sedona-jupyterlab/sedona_jupyterlab.dockerfile \ + -t kartikeyhadiya/sedona_jupyterlab:latest \ + -t kartikeyhadiya/sedona_jupyterlab:${SEDONA_VERSION} . \ No newline at end of file diff --git a/docker/spark-sedona-jupyterlab/compose.yml b/docker/spark-sedona-jupyterlab/compose.yml new file mode 100644 index 0000000000..86dced4434 --- /dev/null +++ b/docker/spark-sedona-jupyterlab/compose.yml @@ -0,0 +1,71 @@ +# +# 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. +# + +version: "3.9" +volumes: + shared-workspace: + driver: local + name: shared-workspace + spark_volume: +services: + spark-master: + image: kartikeyhadiya/spark-master + container_name: spark-master + ports: + - 8080:8080 + - 7077:7077 + volumes: + - shared-workspace:/opt/workspace + - spark_volume:/opt/spark + - ../../binder:/opt/workspace/examples:rw + spark-worker-1: + image: kartikeyhadiya/spark-worker + container_name: spark-worker-1 + environment: + - SPARK_WORKER_CORES=1 + - SPARK_WORKER_MEMORY=4g + ports: + - 8081:8081 + volumes: + - shared-workspace:/opt/workspace + - ../../binder:/opt/workspace/examples:rw + depends_on: + - spark-master + spark-worker-2: + image: kartikeyhadiya/spark-worker + container_name: spark-worker-2 + environment: + - SPARK_WORKER_CORES=1 + - SPARK_WORKER_MEMORY=4g + ports: + - 8082:8081 + volumes: + - shared-workspace:/opt/workspace + - ../../binder:/opt/workspace/examples:rw + depends_on: + - spark-master + jupyterlab: + image: kartikeyhadiya/sedona_jupyterlab + container_name: sedona_jupyterlab + ports: + - 8888:8888 + volumes: + - shared-workspace:/opt/workspace + - spark_volume:/opt/spark + - ../../binder:/opt/workspace/examples:rw + depends_on: + - spark-master \ No newline at end of file diff --git a/docker/spark-sedona-jupyterlab/requirements.txt b/docker/spark-sedona-jupyterlab/requirements.txt new file mode 100644 index 0000000000..54416a7db4 --- /dev/null +++ b/docker/spark-sedona-jupyterlab/requirements.txt @@ -0,0 +1,12 @@ +pytest +jupyterlab +pandas +shapely==1.8.4 +geopandas<=0.11.1 +pyspark==3.3.2 +attrs +pyarrow +ipykernel +apache-sedona==1.4.0 +matplotlib +descartes \ No newline at end of file diff --git a/docker/spark-sedona-jupyterlab/sedona_jupyterlab.dockerfile b/docker/spark-sedona-jupyterlab/sedona_jupyterlab.dockerfile new file mode 100644 index 0000000000..5a777c3394 --- /dev/null +++ b/docker/spark-sedona-jupyterlab/sedona_jupyterlab.dockerfile @@ -0,0 +1,48 @@ +# +# 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. +# + +FROM kartikeyhadiya/base-jdk + +ARG python_version=3.9 +RUN python_version=`echo ${python_version} | cut -d '.' -f 1-2` +ARG sedona_version=1.4.0 +ARG geotools_wrapper_version=1.4.0-28.2 + +COPY docker/spark-sedona-jupyterlab/requirements.txt /opt/requirements.txt +COPY binder/* /opt/workspace/examples/ + +RUN apt-get update -y && \ + apt-get install -y python3-pip && \ + pip3 install --upgrade pip +RUN pip3 install -r /opt/requirements.txt +RUN apt-get install -y curl && \ + curl https://dlcdn.apache.org/sedona/${sedona_version}/apache-sedona-${sedona_version}-bin.tar.gz -o sedona.tar.gz && \ + tar -xf sedona.tar.gz && \ + # -- Copy sedona jars to PySpark jars + mv apache-sedona-${sedona_version}-bin/* /usr/local/lib/python${python_version}/dist-packages/pyspark/jars/ && \ + rm sedona.tar.gz && \ + # -- Copy geotools-wrapper jars to PySpark jars + curl https://repo1.maven.org/maven2/org/datasyslab/geotools-wrapper/${geotools_wrapper_version}/geotools-wrapper-${geotools_wrapper_version}.jar -o geotools-wrapper-${geotools_wrapper_version}.jar && \ + mv geotools-wrapper-${geotools_wrapper_version}.jar /usr/local/lib/python${python_version}/dist-packages/pyspark/jars/ + +# -- Runtime + +EXPOSE 8888 + +WORKDIR ${SHARED_WORKSPACE} + +CMD jupyter lab --ip=0.0.0.0 --port=8888 --no-browser --allow-root --NotebookApp.token= \ No newline at end of file diff --git a/docker/spark-sedona-zeppelin/.dockerignore b/docker/spark-sedona-zeppelin/.dockerignore new file mode 100644 index 0000000000..90b0504829 --- /dev/null +++ b/docker/spark-sedona-zeppelin/.dockerignore @@ -0,0 +1,3 @@ +Dockerfile +compose.yml +README.md \ No newline at end of file diff --git a/docker/spark-sedona-zeppelin/README.md b/docker/spark-sedona-zeppelin/README.md new file mode 100644 index 0000000000..bd311d054f --- /dev/null +++ b/docker/spark-sedona-zeppelin/README.md @@ -0,0 +1,20 @@ +# sedona_zeppelin-0.10.1 +Image for apache sedona with Zeppelin and 1 spark master node and 1 worker node. The image is build on top of spark-3.0.1 and sedona-1.3.1-incubating as zeppelin latest version 0.10.1 doesn't support spark versions above 3.1.* and sedona 1.3.1-incubating is compatible with spark 3.0.*. + +# Docker Image +kartikeyhadiya/sedona_zeppelin-0.10.1:1.3.1-incubating + +The image contains all the dependencies required for configuring Apache Sedona and Zeppelin. Zeppelin can be accessed at http://localhost:8082/ after pulling image. +May require enabling for helium plugin in zeppelin. + +# Spark Configuration + - Master node can be accessed at port http://localhost:8080/ (spark://spark-master:7077). + - Spark-worker-1 can be accessed at port http://localhost:8081/. + +# How to build + - Clone the repository + - Run docker-compose up + +# Requirements + - Docker + - Docker-compose diff --git a/docker/spark-sedona-zeppelin/build.sh b/docker/spark-sedona-zeppelin/build.sh new file mode 100644 index 0000000000..573db68ebe --- /dev/null +++ b/docker/spark-sedona-zeppelin/build.sh @@ -0,0 +1,64 @@ +#!/bin/bash + +# +# 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. +# + +# -- Software Stack Version + +PYTHON_VERSION="3.7.12" +SPARK_VERSION="3.0.1" +HADOOP_VERSION="3.2" +SEDONA_VERSION="1.3.1-incubating" +GEOTOOLS_WRAPPER_VERSION="1.3.0-27.2" + +# -- Building the Images + +docker build \ + --no-cache \ + --build-arg python_version="${PYTHON_VERSION}" \ + -f docker/base-jdk.dockerfile \ + -t kartikeyhadiya/base-jdk:latest . + +docker build \ + --no-cache \ + --build-arg spark_version="${SPARK_VERSION}" \ + --build-arg hadoop_version="${HADOOP_VERSION}" \ + --build-arg sedona_version="${SEDONA_VERSION}" \ + --build-arg geotools_wrapper_version="${GEOTOOLS_WRAPPER_VERSION}" \ + -f docker/spark-base.dockerfile \ + -t kartikeyhadiya/spark-base:${SPARK_VERSION} . + +docker build \ + --no-cache \ + --build-arg spark_version="${SPARK_VERSION}" \ + -f docker/spark-master.dockerfile \ + -t kartikeyhadiya/spark-master:${SPARK_VERSION} . + +docker build \ + --no-cache \ + --build-arg spark_version="${SPARK_VERSION}" \ + -f docker/spark-worker.dockerfile \ + -t kartikeyhadiya/spark-worker:${SPARK_VERSION} . + +docker build \ + --no-cache \ + --build-arg sedona_version="${SEDONA_VERSION}" \ + --build-arg geotools_wrapper_version="${GEOTOOLS_WRAPPER_VERSION}" \ + --build-arg spark_version="${SPARK_VERSION}" \ + -f docker/spark-sedona-zeppelin/sedona_zeppelin.dockerfile \ + -t kartikeyhadiya/sedona_zeppelin:latest \ + -t kartikeyhadiya/sedona_zeppelin:${SEDONA_VERSION} . \ No newline at end of file diff --git a/docker/spark-sedona-zeppelin/compose.yml b/docker/spark-sedona-zeppelin/compose.yml new file mode 100644 index 0000000000..a69d92345c --- /dev/null +++ b/docker/spark-sedona-zeppelin/compose.yml @@ -0,0 +1,60 @@ +# +# 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. +# + +version: "3.9" +volumes: + spark_volume: + shared-workspace: + driver: local + name: shared-workspace +services: + spark-master: + image: kartikeyhadiya/spark-master:3.0.1 + container_name: spark-master + ports: + - 8080:8080 + - 7077:7077 + volumes: + - ../../binder:/opt/workspace/examples:rw + - spark_volume:/opt/spark + - shared-workspace:/opt/workspace + spark-worker-1: + image: kartikeyhadiya/spark-worker:3.0.1 + container_name: spark-worker-1 + environment: + - SPARK_WORKER_CORES=2 + - SPARK_WORKER_MEMORY=4g + ports: + - 8081:8081 + volumes: + - ../../binder:/opt/workspace/examples:rw + - shared-workspace:/opt/workspace + depends_on: + - spark-master + zeppelin: + image: kartikeyhadiya/sedona_zeppelin:1.3.1-incubating + container_name: sedona_zeppelin + ports: + - "8083:8080" + volumes: + - ../../binder:/opt/workspace/examples:rw + - ./zeppelin/notebook:/opt/zeppelin/notebook + - ./zeppelin/conf:/opt/zeppelin/conf + - spark_volume:/opt/spark + - shared-workspace:/opt/workspace + depends_on: + - spark-master \ No newline at end of file diff --git a/docker/spark-sedona-zeppelin/requirements.txt b/docker/spark-sedona-zeppelin/requirements.txt new file mode 100644 index 0000000000..969ce5d4f1 --- /dev/null +++ b/docker/spark-sedona-zeppelin/requirements.txt @@ -0,0 +1,14 @@ +pytest +ipykernel +notebook==6.0.0 +jupyter +jupyterlab +pandas +shapely==1.8.4 +geopandas<=0.10.2 +pyspark==3.0.1 +attrs +pyarrow +apache-sedona==1.3.1 +matplotlib +descartes \ No newline at end of file diff --git a/docker/spark-sedona-zeppelin/sedona_zeppelin.dockerfile b/docker/spark-sedona-zeppelin/sedona_zeppelin.dockerfile new file mode 100644 index 0000000000..80e4f21789 --- /dev/null +++ b/docker/spark-sedona-zeppelin/sedona_zeppelin.dockerfile @@ -0,0 +1,31 @@ +FROM apache/zeppelin:0.10.1 + +ARG sedona_version=1.3.1-incubating +ARG geotools_wrapper_version=1.3.0-27.2 + +USER root + +EXPOSE 8080 + +ENV SPARK_HOME=/opt/spark +ENV SPARK_MASTER=spark://spark-master:7077 +ENV PYSPARK_PYTHON=python3 +ENV PYSPARK_DRIVER_PYTHON=python3 +ENV PYTHONPATH=${SPARK_HOME}/python +ENV PATH=${PYTHONPATH}:${PATH} + +COPY docker/spark-sedona-zeppelin/zeppelin/ /opt/zeppelin/ +RUN mkdir -p /opt/zeppelin/sedona_mapviz_widget +COPY zeppelin/index.js /opt/zeppelin/sedona_mapviz_widget +COPY zeppelin/package.json /opt/zeppelin/sedona_mapviz_widget +COPY docker/spark-sedona-zeppelin/requirements.txt /opt/requirements.txt +COPY binder/* /opt/workspace/examples/ + +RUN pip3 install --upgrade pip +RUN pip3 install -r /opt/requirements.txt && \ + rm /opt/requirements.txt + +WORKDIR /opt/zeppelin + +# -- Runtime +CMD ["/opt/zeppelin/bin/zeppelin.sh"] \ No newline at end of file diff --git a/docker/spark-sedona-zeppelin/zeppelin/conf/helium.json b/docker/spark-sedona-zeppelin/zeppelin/conf/helium.json new file mode 100644 index 0000000000..b0ddfea920 --- /dev/null +++ b/docker/spark-sedona-zeppelin/zeppelin/conf/helium.json @@ -0,0 +1,9 @@ +{ + "enabled": { + "sedona-zeppelin": "/opt/zeppelin" + }, + "packageConfig": {}, + "bundleDisplayOrder": [ + "sedona-zeppelin" + ] +} \ No newline at end of file diff --git a/docker/spark-sedona-zeppelin/zeppelin/conf/interpreter.json b/docker/spark-sedona-zeppelin/zeppelin/conf/interpreter.json new file mode 100644 index 0000000000..5b73ec5641 --- /dev/null +++ b/docker/spark-sedona-zeppelin/zeppelin/conf/interpreter.json @@ -0,0 +1,3196 @@ +{ + "interpreterSettings": { + "ignite": { + "id": "ignite", + "name": "ignite", + "group": "ignite", + "properties": { + "ignite.addresses": { + "name": "ignite.addresses", + "value": "127.0.0.1:47500..47509", + "type": "textarea", + "description": "Comma separated list of addresses (e.g. 127.0.0.1:47500 or 127.0.0.1:47500..47509)" + }, + "ignite.clientMode": { + "name": "ignite.clientMode", + "value": true, + "type": "checkbox", + "description": "Client mode. true or false" + }, + "ignite.config.url": { + "name": "ignite.config.url", + "value": "", + "type": "url", + "description": "Configuration URL. Overrides all other settings." + }, + "ignite.peerClassLoadingEnabled": { + "name": "ignite.peerClassLoadingEnabled", + "value": true, + "type": "checkbox", + "description": "Peer class loading enabled. True or false" + }, + "ignite.jdbc.url": { + "name": "ignite.jdbc.url", + "value": "jdbc:ignite:cfg://default-ignite-jdbc.xml", + "type": "string", + "description": "Ignite JDBC connection URL." + } + }, + "status": "READY", + "interpreterGroup": [ + { + "name": "ignite", + "class": "org.apache.zeppelin.ignite.IgniteInterpreter", + "defaultInterpreter": false, + "editor": { + "editOnDblClick": false, + "completionSupport": false + } + }, + { + "name": "ignitesql", + "class": "org.apache.zeppelin.ignite.IgniteSqlInterpreter", + "defaultInterpreter": false, + "editor": { + "editOnDblClick": false, + "completionSupport": false + } + } + ], + "dependencies": [], + "option": { + "remote": true, + "port": -1, + "isExistingProcess": false, + "setPermission": false, + "owners": [], + "isUserImpersonate": false + } + }, + "beam": { + "id": "beam", + "name": "beam", + "group": "beam", + "properties": { + "zeppelin.scio.argz": { + "name": "zeppelin.scio.argz", + "value": "--runner\u003dInProcessPipelineRunner", + "type": "textarea", + "description": "Scio interpreter wide arguments" + }, + "zeppelin.scio.maxResult": { + "name": "zeppelin.scio.maxResult", + "value": "1000", + "type": "number", + "description": "Max number of SCollection results to display." + } + }, + "status": "READY", + "interpreterGroup": [ + { + "name": "beam", + "class": "org.apache.zeppelin.beam.BeamInterpreter", + "defaultInterpreter": true, + "editor": { + "editOnDblClick": false + } + }, + { + "name": "scio", + "class": "org.apache.zeppelin.scio.ScioInterpreter", + "defaultInterpreter": false, + "editor": { + "language": "scala" + } + } + ], + "dependencies": [], + "option": { + "remote": true, + "port": -1, + "isExistingProcess": false, + "setPermission": false, + "owners": [], + "isUserImpersonate": false + } + }, + "geode": { + "id": "geode", + "name": "geode", + "group": "geode", + "properties": { + "geode.locator.host": { + "name": "geode.locator.host", + "value": "localhost", + "type": "string", + "description": "The Geode Locator Host." + }, + "geode.locator.port": { + "name": "geode.locator.port", + "value": "10334", + "type": "number", + "description": "The Geode Locator Port." + }, + "geode.max.result": { + "name": "geode.max.result", + "value": "1000", + "type": "number", + "description": "Max number of OQL result to display." + } + }, + "status": "READY", + "interpreterGroup": [ + { + "name": "oql", + "class": "org.apache.zeppelin.geode.GeodeOqlInterpreter", + "defaultInterpreter": false, + "editor": { + "language": "sql" + } + } + ], + "dependencies": [], + "option": { + "remote": true, + "port": -1, + "isExistingProcess": false, + "setPermission": false, + "owners": [], + "isUserImpersonate": false + } + }, + "jdbc": { + "id": "jdbc", + "name": "jdbc", + "group": "jdbc", + "properties": { + "default.url": { + "name": "default.url", + "value": "jdbc:postgresql://localhost:5432/", + "type": "string", + "description": "The URL for JDBC." + }, + "default.user": { + "name": "default.user", + "value": "gpadmin", + "type": "string", + "description": "The JDBC user name" + }, + "default.password": { + "name": "default.password", + "value": "", + "type": "password", + "description": "The JDBC user password" + }, + "default.driver": { + "name": "default.driver", + "value": "org.postgresql.Driver", + "type": "string", + "description": "JDBC Driver Name" + }, + "default.completer.ttlInSeconds": { + "name": "default.completer.ttlInSeconds", + "value": "120", + "type": "number", + "description": "Time to live sql completer in seconds (-1 to update everytime, 0 to disable update)" + }, + "default.completer.schemaFilters": { + "name": "default.completer.schemaFilters", + "value": "", + "type": "textarea", + "description": "Сomma separated schema (schema \u003d catalog \u003d database) filters to get metadata for completions. Supports \u0027%\u0027 symbol is equivalent to any set of characters. (ex. prod_v_%,public%,info)" + }, + "default.precode": { + "name": "default.precode", + "value": "", + "type": "textarea", + "description": "SQL which executes while opening connection" + }, + "default.statementPrecode": { + "name": "default.statementPrecode", + "value": "", + "type": "textarea", + "description": "Runs before each run of the paragraph, in the same connection" + }, + "common.max_count": { + "name": "common.max_count", + "value": "1000", + "type": "number", + "description": "Max number of SQL result to display." + }, + "zeppelin.jdbc.auth.type": { + "name": "zeppelin.jdbc.auth.type", + "value": "", + "type": "string", + "description": "If auth type is needed, Example: KERBEROS" + }, + "zeppelin.jdbc.auth.kerberos.proxy.enable": { + "name": "zeppelin.jdbc.auth.kerberos.proxy.enable", + "value": "true", + "type": "checkbox", + "description": "When auth type is Kerberos, enable/disable Kerberos proxy with the login user to get the connection. Default value is true." + }, + "zeppelin.jdbc.concurrent.use": { + "name": "zeppelin.jdbc.concurrent.use", + "value": true, + "type": "checkbox", + "description": "Use parallel scheduler" + }, + "zeppelin.jdbc.concurrent.max_connection": { + "name": "zeppelin.jdbc.concurrent.max_connection", + "value": "10", + "type": "number", + "description": "Number of concurrent execution" + }, + "zeppelin.jdbc.keytab.location": { + "name": "zeppelin.jdbc.keytab.location", + "value": "", + "type": "string", + "description": "Kerberos keytab location" + }, + "zeppelin.jdbc.principal": { + "name": "zeppelin.jdbc.principal", + "value": "", + "type": "string", + "description": "Kerberos principal" + }, + "zeppelin.jdbc.interpolation": { + "name": "zeppelin.jdbc.interpolation", + "value": false, + "type": "checkbox", + "description": "Enable ZeppelinContext variable interpolation into paragraph text" + }, + "zeppelin.jdbc.maxConnLifetime": { + "name": "zeppelin.jdbc.maxConnLifetime", + "value": "-1", + "type": "number", + "description": "Maximum of connection lifetime in milliseconds. A value of zero or less means the connection has an infinite lifetime." + }, + "zeppelin.jdbc.maxRows": { + "name": "zeppelin.jdbc.maxRows", + "value": "1000", + "type": "number", + "description": "Maximum number of rows fetched from the query." + }, + "zeppelin.jdbc.hive.timeout.threshold": { + "name": "zeppelin.jdbc.hive.timeout.threshold", + "value": "60000", + "type": "number", + "description": "Timeout for hive job timeout" + }, + "zeppelin.jdbc.hive.monitor.query_interval": { + "name": "zeppelin.jdbc.hive.monitor.query_interval", + "value": "1000", + "type": "number", + "description": "Query interval for hive statement" + } + }, + "status": "READY", + "interpreterGroup": [ + { + "name": "sql", + "class": "org.apache.zeppelin.jdbc.JDBCInterpreter", + "defaultInterpreter": false, + "editor": { + "language": "sql", + "editOnDblClick": false, + "completionSupport": true + } + } + ], + "dependencies": [], + "option": { + "remote": true, + "port": -1, + "isExistingProcess": false, + "setPermission": false, + "owners": [], + "isUserImpersonate": false + } + }, + "influxdb": { + "id": "influxdb", + "name": "influxdb", + "group": "influxdb", + "properties": { + "influxdb.url": { + "name": "influxdb.url", + "value": "http://localhost:9999", + "type": "string", + "description": "The URL for InfluxDB 2.X API" + }, + "influxdb.token": { + "name": "influxdb.token", + "value": "my-token", + "type": "password", + "description": "InfluxDB auth token" + }, + "influxdb.org": { + "name": "influxdb.org", + "value": "my-org", + "type": "string", + "description": "InfluxDB org name" + }, + "influxdb.logLevel": { + "name": "influxdb.logLevel", + "value": "NONE", + "type": "string", + "description": "InfluxDB http client library verbosity level (NONE, BASIC, HEADERS, BODY)" + } + }, + "status": "READY", + "interpreterGroup": [ + { + "name": "influxdb", + "class": "org.apache.zeppelin.influxdb.InfluxDBInterpreter", + "defaultInterpreter": false, + "editor": { + "language": "sql", + "editOnDblClick": false, + "completionSupport": false + } + } + ], + "dependencies": [], + "option": { + "remote": true, + "port": -1, + "isExistingProcess": false, + "setPermission": false, + "owners": [], + "isUserImpersonate": false + } + }, + "lens": { + "id": "lens", + "name": "lens", + "group": "lens", + "properties": { + "zeppelin.lens.run.concurrent": { + "name": "zeppelin.lens.run.concurrent", + "value": true, + "type": "checkbox", + "description": "Run concurrent Lens Sessions" + }, + "zeppelin.lens.maxThreads": { + "name": "zeppelin.lens.maxThreads", + "value": "10", + "type": "number", + "description": "If concurrency is true then how many threads?" + }, + "zeppelin.lens.maxResults": { + "name": "zeppelin.lens.maxResults", + "value": "1000", + "type": "number", + "description": "max number of rows to display" + }, + "lens.server.base.url": { + "name": "lens.server.base.url", + "value": "http://\u003chostname\u003e:\u003cport\u003e/lensapi", + "type": "url", + "description": "The URL for Lens Server" + }, + "lens.client.dbname": { + "name": "lens.client.dbname", + "value": "default", + "type": "string", + "description": "The database schema name" + }, + "lens.query.enable.persistent.resultset": { + "name": "lens.query.enable.persistent.resultset", + "value": false, + "type": "checkbox", + "description": "Apache Lens to persist result in HDFS?" + }, + "lens.session.cluster.user": { + "name": "lens.session.cluster.user", + "value": "default", + "type": "string", + "description": "Hadoop cluster username" + } + }, + "status": "READY", + "interpreterGroup": [ + { + "name": "lens", + "class": "org.apache.zeppelin.lens.LensInterpreter", + "defaultInterpreter": false, + "editor": { + "editOnDblClick": false, + "completionSupport": false + } + } + ], + "dependencies": [], + "option": { + "remote": true, + "port": -1, + "isExistingProcess": false, + "setPermission": false, + "owners": [], + "isUserImpersonate": false + } + }, + "pig": { + "id": "pig", + "name": "pig", + "group": "pig", + "properties": { + "zeppelin.pig.execType": { + "name": "zeppelin.pig.execType", + "value": "mapreduce", + "type": "string", + "description": "local | mapreduce | tez_local | tez | spark_local | spark" + }, + "zeppelin.pig.includeJobStats": { + "name": "zeppelin.pig.includeJobStats", + "value": false, + "type": "checkbox", + "description": "flag to include job stats in output" + }, + "SPARK_MASTER": { + "name": "SPARK_MASTER", + "value": "spark://spark-master:7077", + "type": "string", + "description": "local | yarn-client" + }, + "SPARK_JAR": { + "name": "SPARK_JAR", + "value": "", + "type": "textarea", + "description": "spark assembly jar uploaded in hdfs" + }, + "zeppelin.pig.maxResult": { + "name": "zeppelin.pig.maxResult", + "value": "1000", + "type": "number", + "description": "max row number for %pig.query" + } + }, + "status": "READY", + "interpreterGroup": [ + { + "name": "script", + "class": "org.apache.zeppelin.pig.PigInterpreter", + "defaultInterpreter": false, + "editor": { + "language": "pig", + "editOnDblClick": false + } + }, + { + "name": "query", + "class": "org.apache.zeppelin.pig.PigQueryInterpreter", + "defaultInterpreter": false, + "editor": { + "language": "pig", + "editOnDblClick": false + } + } + ], + "dependencies": [], + "option": { + "remote": true, + "port": -1, + "isExistingProcess": false, + "setPermission": false, + "owners": [], + "isUserImpersonate": false + } + }, + "jupyter": { + "id": "jupyter", + "name": "jupyter", + "group": "jupyter", + "properties": {}, + "status": "READY", + "interpreterGroup": [ + { + "name": "jupyter", + "class": "org.apache.zeppelin.jupyter.JupyterInterpreter", + "defaultInterpreter": false, + "editor": { + "language": "text", + "editOnDblClick": false, + "completionKey": "TAB", + "completionSupport": true + } + } + ], + "dependencies": [], + "option": { + "remote": true, + "port": -1, + "isExistingProcess": false, + "setPermission": false, + "owners": [], + "isUserImpersonate": false + } + }, + "file": { + "id": "file", + "name": "file", + "group": "file", + "properties": { + "hdfs.url": { + "name": "hdfs.url", + "value": "http://localhost:50070/webhdfs/v1/", + "type": "url", + "description": "The URL for WebHDFS" + }, + "hdfs.user": { + "name": "hdfs.user", + "value": "hdfs", + "type": "string", + "description": "The WebHDFS user" + }, + "hdfs.maxlength": { + "name": "hdfs.maxlength", + "value": "1000", + "type": "number", + "description": "Maximum number of lines of results fetched" + } + }, + "status": "READY", + "interpreterGroup": [ + { + "name": "hdfs", + "class": "org.apache.zeppelin.file.HDFSFileInterpreter", + "defaultInterpreter": false, + "editor": { + "editOnDblClick": false, + "completionSupport": true + } + } + ], + "dependencies": [], + "option": { + "remote": true, + "port": -1, + "isExistingProcess": false, + "setPermission": false, + "owners": [], + "isUserImpersonate": false + } + }, + "spark-submit": { + "id": "spark-submit", + "name": "spark-submit", + "group": "spark-submit", + "properties": { + "SPARK_HOME": { + "name": "SPARK_HOME", + "value": "/opt/spark", + "type": "string", + "description": "Location of spark distribution" + } + }, + "status": "READY", + "interpreterGroup": [ + { + "name": "submit", + "class": "org.apache.zeppelin.spark.submit.SparkSubmitInterpreter", + "defaultInterpreter": true, + "editor": { + "language": "sh", + "editOnDblClick": false, + "completionSupport": false + } + } + ], + "dependencies": [], + "option": { + "remote": true, + "port": -1, + "perNote": "shared", + "perUser": "shared", + "isExistingProcess": false, + "setPermission": false, + "owners": [], + "isUserImpersonate": false + } + }, + "java": { + "id": "java", + "name": "java", + "group": "java", + "properties": {}, + "status": "READY", + "interpreterGroup": [ + { + "name": "java", + "class": "org.apache.zeppelin.java.JavaInterpreter", + "defaultInterpreter": true, + "editor": { + "language": "java", + "editOnDblClick": false + } + } + ], + "dependencies": [], + "option": { + "remote": true, + "port": -1, + "isExistingProcess": false, + "setPermission": false, + "owners": [], + "isUserImpersonate": false + } + }, + "submarine": { + "id": "submarine", + "name": "submarine", + "group": "submarine", + "properties": { + "zeppelin.submarine.auth.type": { + "name": "zeppelin.submarine.auth.type", + "value": "kerberos", + "type": "string", + "description": "simple or kerberos" + }, + "yarn.webapp.http.address": { + "name": "yarn.webapp.http.address", + "value": "", + "type": "string", + "description": "YARN web ui address" + }, + "INTERPRETER_LAUNCH_MODE": { + "name": "INTERPRETER_LAUNCH_MODE", + "value": "local", + "type": "string", + "description": "Submarine interpreter launch in local/yarn" + }, + "HADOOP_YARN_SUBMARINE_JAR": { + "name": "HADOOP_YARN_SUBMARINE_JAR", + "value": "", + "type": "string", + "description": "Submarine executive full path, ex) ../hadoop/share/hadoop/yarn/hadoop-yarn-submarine-x.x.x.jar" + }, + "DOCKER_HADOOP_HDFS_HOME": { + "name": "DOCKER_HADOOP_HDFS_HOME", + "value": "", + "type": "string", + "description": "hadoop home in docker container" + }, + "DOCKER_JAVA_HOME": { + "name": "DOCKER_JAVA_HOME", + "value": "", + "type": "string", + "description": "java home in docker container" + }, + "SUBMARINE_INTERPRETER_DOCKER_IMAGE": { + "name": "SUBMARINE_INTERPRETER_DOCKER_IMAGE", + "value": "", + "type": "string", + "description": "Docker image of submarine interpreter" + }, + "zeppelin.interpreter.rpc.portRange": { + "name": "zeppelin.interpreter.rpc.portRange", + "value": "29914", + "type": "string", + "description": "The process port of the submarine interpreter container mapping defined in the `scripts/docker/interpreter/submarine/tensorflow_gpu/Dockerfile` file" + }, + "submarine.yarn.queue": { + "name": "submarine.yarn.queue", + "value": "root.default", + "type": "string", + "description": "submarine queue name of yarn" + }, + "submarine.hadoop.home": { + "name": "submarine.hadoop.home", + "value": "", + "type": "string", + "description": "submarine user-defined HADOOP_HOME" + }, + "SUBMARINE_HADOOP_CONF_DIR": { + "name": "SUBMARINE_HADOOP_CONF_DIR", + "value": "", + "type": "string", + "description": "submarine user-defined HADOOP_CONF_DIR" + }, + "submarine.hadoop.krb5.conf": { + "name": "submarine.hadoop.krb5.conf", + "value": "/etc/krb5.conf", + "type": "string", + "description": "submarine user-defined hdfs/yarn kerberos authentication krb5.conf" + }, + "SUBMARINE_HADOOP_KEYTAB": { + "name": "SUBMARINE_HADOOP_KEYTAB", + "value": "", + "type": "string", + "description": "submarine hdfs/yarn kerberos authentication" + }, + "SUBMARINE_HADOOP_PRINCIPAL": { + "name": "SUBMARINE_HADOOP_PRINCIPAL", + "value": "", + "type": "string", + "description": "submarine hdfs/yarn kerberos authentication" + }, + "docker.container.network": { + "name": "docker.container.network", + "value": "", + "type": "string", + "description": "Network name in the docker container" + }, + "DOCKER_CONTAINER_TIME_ZONE": { + "name": "DOCKER_CONTAINER_TIME_ZONE", + "value": "Etc/UTC", + "type": "string", + "description": "docker container time zone" + }, + "zeppelin.interpreter.connect.timeout": { + "name": "zeppelin.interpreter.connect.timeout", + "value": "100000", + "type": "number", + "description": "zeppelin interpreter connect timeout" + }, + "submarine.algorithm.hdfs.path": { + "name": "submarine.algorithm.hdfs.path", + "value": "hdfs://...", + "type": "string", + "description": "Algorithm file upload HDFS path, Support ${username} variable symbol, For example: hdfs:///usr/${username}" + }, + "tf.parameter.services.num": { + "name": "tf.parameter.services.num", + "value": "1", + "type": "number", + "description": "Number of parameter services" + }, + "tf.worker.services.num": { + "name": "tf.worker.services.num", + "value": "0", + "type": "number", + "description": "Number of worker services" + }, + "tf.parameter.services.docker.image": { + "name": "tf.parameter.services.docker.image", + "value": "", + "type": "string", + "description": "Docker image of parameter services" + }, + "tf.parameter.services.gpu": { + "name": "tf.parameter.services.gpu", + "value": "0", + "type": "number", + "description": "GPU number of parameter services" + }, + "tf.parameter.services.cpu": { + "name": "tf.parameter.services.cpu", + "value": "2", + "type": "number", + "description": "CPU number of parameter services" + }, + "tf.parameter.services.memory": { + "name": "tf.parameter.services.memory", + "value": "2G", + "type": "string", + "description": "Memory number of parameter services" + }, + "tf.worker.services.docker.image": { + "name": "tf.worker.services.docker.image", + "value": "", + "type": "string", + "description": "Docker image of worker services" + }, + "tf.worker.services.gpu": { + "name": "tf.worker.services.gpu", + "value": "0", + "type": "number", + "description": "GPU number of worker services" + }, + "tf.worker.services.cpu": { + "name": "tf.worker.services.cpu", + "value": "2", + "type": "number", + "description": "CPU number of worker services" + }, + "tf.worker.services.memory": { + "name": "tf.worker.services.memory", + "value": "4G", + "type": "string", + "description": "Memory number of worker services" + }, + "tf.tensorboard.enable": { + "name": "tf.tensorboard.enable", + "value": true, + "type": "checkbox", + "description": "Whether to enable tensorboard" + }, + "tf.checkpoint.path": { + "name": "tf.checkpoint.path", + "value": "", + "type": "string", + "description": "tensorflow checkpoint path" + }, + "zeppelin.python": { + "name": "zeppelin.python", + "value": "python", + "type": "string", + "description": "Python directory. It is set to python by default.(assume python is in your $PATH)" + }, + "zeppelin.python.maxResult": { + "name": "zeppelin.python.maxResult", + "value": "1000", + "type": "number", + "description": "Max number of dataframe rows to display." + }, + "zeppelin.python.useIPython": { + "name": "zeppelin.python.useIPython", + "value": false, + "type": "checkbox", + "description": "whether use IPython when it is available" + }, + "machinelearning.distributed.enable": { + "name": "machinelearning.distributed.enable", + "value": false, + "type": "checkbox", + "description": "Running distributed machine learning" + }, + "zeppelin.ipython.launch.timeout": { + "name": "zeppelin.ipython.launch.timeout", + "value": "30000", + "type": "number", + "description": "time out for ipython launch" + }, + "zeppelin.ipython.grpc.message_size": { + "name": "zeppelin.ipython.grpc.message_size", + "value": "33554432", + "type": "number", + "description": "grpc message size, default is 32M" + }, + "shell.command.timeout.millisecs": { + "name": "shell.command.timeout.millisecs", + "value": "60000", + "type": "number", + "description": "Shell command time out in millisecs. Default \u003d 60000" + } + }, + "status": "READY", + "interpreterGroup": [ + { + "name": "submarine", + "class": "org.apache.zeppelin.submarine.SubmarineInterpreter", + "defaultInterpreter": true, + "editor": { + "language": "sh", + "editOnDblClick": false, + "completionSupport": false + }, + "config": { + "fontSize": 9.0, + "colWidth": 12.0, + "runOnSelectionChange": false, + "title": true + } + }, + { + "name": "python", + "class": "org.apache.zeppelin.submarine.PySubmarineInterpreter", + "defaultInterpreter": false, + "editor": { + "language": "python", + "editOnDblClick": false, + "completionSupport": true + } + }, + { + "name": "ipython", + "class": "org.apache.zeppelin.submarine.IPySubmarineInterpreter", + "defaultInterpreter": false, + "editor": { + "language": "python", + "editOnDblClick": false, + "completionKey": "TAB", + "completionSupport": true + } + }, + { + "name": "sh", + "class": "org.apache.zeppelin.submarine.SubmarineShellInterpreter", + "defaultInterpreter": false, + "editor": { + "language": "sh", + "editOnDblClick": false, + "completionSupport": false + } + } + ], + "dependencies": [], + "option": { + "remote": true, + "port": -1, + "isExistingProcess": false, + "setPermission": false, + "owners": [], + "isUserImpersonate": false + } + }, + "elasticsearch": { + "id": "elasticsearch", + "name": "elasticsearch", + "group": "elasticsearch", + "properties": { + "elasticsearch.host": { + "name": "elasticsearch.host", + "value": "localhost", + "type": "string", + "description": "The host for Elasticsearch" + }, + "elasticsearch.port": { + "name": "elasticsearch.port", + "value": "9300", + "type": "number", + "description": "The port for Elasticsearch" + }, + "elasticsearch.client.type": { + "name": "elasticsearch.client.type", + "value": "transport", + "type": "string", + "description": "The type of client for Elasticsearch (transport or http)" + }, + "elasticsearch.cluster.name": { + "name": "elasticsearch.cluster.name", + "value": "elasticsearch", + "type": "string", + "description": "The cluster name for Elasticsearch" + }, + "elasticsearch.result.size": { + "name": "elasticsearch.result.size", + "value": "10", + "type": "number", + "description": "The size of the result set of a search query" + }, + "elasticsearch.basicauth.username": { + "name": "elasticsearch.basicauth.username", + "value": "", + "type": "string", + "description": "Username for a basic authentication" + }, + "elasticsearch.basicauth.password": { + "name": "elasticsearch.basicauth.password", + "value": "", + "type": "password", + "description": "Password for a basic authentication" + } + }, + "status": "READY", + "interpreterGroup": [ + { + "name": "elasticsearch", + "class": "org.apache.zeppelin.elasticsearch.ElasticsearchInterpreter", + "defaultInterpreter": false, + "editor": { + "editOnDblClick": false, + "completionSupport": true + } + } + ], + "dependencies": [], + "option": { + "remote": true, + "port": -1, + "isExistingProcess": false, + "setPermission": false, + "owners": [], + "isUserImpersonate": false + } + }, + "spark": { + "id": "spark", + "name": "spark", + "group": "spark", + "properties": { + "SPARK_HOME": { + "name": "SPARK_HOME", + "value": "/opt/spark", + "type": "string", + "description": "Location of spark distribution" + }, + "spark.master": { + "name": "spark.master", + "value": "spark://spark-master:7077", + "type": "string", + "description": "Spark master uri. local | yarn-client | yarn-cluster | spark master address of standalone mode, ex) spark://master_host:7077" + }, + "spark.submit.deployMode": { + "name": "spark.submit.deployMode", + "value": "", + "type": "string", + "description": "The deploy mode of Spark driver program, either \"client\" or \"cluster\", Which means to launch driver program locally (\"client\") or remotely (\"cluster\") on one of the nodes inside the cluster." + }, + "spark.app.name": { + "name": "spark.app.name", + "value": "", + "type": "string", + "description": "The name of spark application." + }, + "spark.driver.cores": { + "name": "spark.driver.cores", + "value": "1", + "type": "number", + "description": "Number of cores to use for the driver process, only in cluster mode." + }, + "spark.driver.memory": { + "name": "spark.driver.memory", + "value": "1g", + "type": "string", + "description": "Amount of memory to use for the driver process, i.e. where SparkContext is initialized, in the same format as JVM memory strings with a size unit suffix (\"k\", \"m\", \"g\" or \"t\") (e.g. 512m, 2g)." + }, + "spark.executor.cores": { + "name": "spark.executor.cores", + "value": "1", + "type": "number", + "description": "The number of cores to use on each executor" + }, + "spark.executor.memory": { + "name": "spark.executor.memory", + "value": "2g", + "type": "string", + "description": "Executor memory per worker instance. ex) 512m, 32g" + }, + "spark.executor.instances": { + "name": "spark.executor.instances", + "value": "2", + "type": "number", + "description": "The number of executors for static allocation." + }, + "spark.files": { + "name": "spark.files", + "value": "", + "type": "string", + "description": "Comma-separated list of files to be placed in the working directory of each executor. Globs are allowed." + }, + "spark.jars": { + "name": "spark.jars", + "value": "", + "type": "string", + "description": "Comma-separated list of jars to include on the driver and executor classpaths. Globs are allowed." + }, + "spark.jars.packages": { + "name": "spark.jars.packages", + "value": "", + "type": "string", + "description": "Comma-separated list of Maven coordinates of jars to include on the driver and executor classpaths. The coordinates should be groupId:artifactId:version. If spark.jars.ivySettings is given artifacts will be resolved according to the configuration in the file, otherwise artifacts will be searched for in the local maven repo, then maven central and finally any additional remote repositories given by the command-line option --repositories." + }, + "zeppelin.spark.useHiveContext": { + "name": "zeppelin.spark.useHiveContext", + "value": true, + "type": "checkbox", + "description": "Use HiveContext instead of SQLContext if it is true. Enable hive for SparkSession." + }, + "zeppelin.spark.run.asLoginUser": { + "name": "zeppelin.spark.run.asLoginUser", + "value": true, + "type": "checkbox", + "description": "Whether run spark job as the zeppelin login user, it is only applied when running spark job in hadoop yarn cluster and shiro is enabled" + }, + "zeppelin.spark.printREPLOutput": { + "name": "zeppelin.spark.printREPLOutput", + "value": true, + "type": "checkbox", + "description": "Print REPL output" + }, + "zeppelin.spark.maxResult": { + "name": "zeppelin.spark.maxResult", + "value": "1000", + "type": "number", + "description": "Max number of result to display." + }, + "zeppelin.spark.enableSupportedVersionCheck": { + "name": "zeppelin.spark.enableSupportedVersionCheck", + "value": false, + "type": "checkbox", + "description": "Whether checking supported spark version. Developer only setting, not for production use" + }, + "zeppelin.spark.uiWebUrl": { + "name": "zeppelin.spark.uiWebUrl", + "value": "", + "type": "string", + "description": "Override Spark UI default URL. In Kubernetes mode, value can be Jinja template string with 3 template variables \u0027PORT\u0027, \u0027SERVICE_NAME\u0027 and \u0027SERVICE_DOMAIN\u0027. (ex: http://{{PORT}}-{{SERVICE_NAME}}.{{SERVICE_DOMAIN}})" + }, + "zeppelin.spark.ui.hidden": { + "name": "zeppelin.spark.ui.hidden", + "value": false, + "type": "checkbox", + "description": "Whether hide spark ui in zeppelin ui" + }, + "spark.webui.yarn.useProxy": { + "name": "spark.webui.yarn.useProxy", + "value": false, + "type": "checkbox", + "description": "whether use yarn proxy url as spark weburl, e.g. http://localhost:8088/proxy/application_1583396598068_0004" + }, + "zeppelin.spark.scala.color": { + "name": "zeppelin.spark.scala.color", + "value": true, + "type": "checkbox", + "description": "Whether enable color output of spark scala interpreter" + }, + "zeppelin.spark.deprecatedMsg.show": { + "name": "zeppelin.spark.deprecatedMsg.show", + "value": true, + "type": "checkbox", + "description": "Whether show the spark deprecated message, spark 2.2 and before are deprecated. Zeppelin will display warning message by default" + }, + "zeppelin.spark.concurrentSQL": { + "name": "zeppelin.spark.concurrentSQL", + "value": true, + "type": "checkbox", + "description": "Execute multiple SQL concurrently if set true." + }, + "zeppelin.spark.concurrentSQL.max": { + "name": "zeppelin.spark.concurrentSQL.max", + "value": "10", + "type": "number", + "description": "Max number of SQL concurrently executed" + }, + "zeppelin.spark.sql.stacktrace": { + "name": "zeppelin.spark.sql.stacktrace", + "value": true, + "type": "checkbox", + "description": "Show full exception stacktrace for SQL queries if set to true." + }, + "zeppelin.spark.sql.interpolation": { + "name": "zeppelin.spark.sql.interpolation", + "value": false, + "type": "checkbox", + "description": "Enable ZeppelinContext variable interpolation into spark sql" + }, + "PYSPARK_PYTHON": { + "name": "PYSPARK_PYTHON", + "value": "python3", + "type": "string", + "description": "Python binary executable to use for PySpark in both driver and workers (default is python2.7 if available, otherwise python). Property `spark.pyspark.python` take precedence if it is set" + }, + "PYSPARK_DRIVER_PYTHON": { + "name": "PYSPARK_DRIVER_PYTHON", + "value": "python3", + "type": "string", + "description": "Python binary executable to use for PySpark in driver only (default is `PYSPARK_PYTHON`). Property `spark.pyspark.driver.python` take precedence if it is set" + }, + "zeppelin.pyspark.useIPython": { + "name": "zeppelin.pyspark.useIPython", + "value": true, + "type": "checkbox", + "description": "Whether use IPython when it is available" + }, + "zeppelin.R.knitr": { + "name": "zeppelin.R.knitr", + "value": true, + "type": "checkbox", + "description": "Whether use knitr or not" + }, + "zeppelin.R.cmd": { + "name": "zeppelin.R.cmd", + "value": "R", + "type": "string", + "description": "R binary executable path" + }, + "zeppelin.R.image.width": { + "name": "zeppelin.R.image.width", + "value": "100%", + "type": "number", + "description": "Image width of R plotting" + }, + "zeppelin.R.render.options": { + "name": "zeppelin.R.render.options", + "value": "out.format \u003d \u0027html\u0027, comment \u003d NA, echo \u003d FALSE, results \u003d \u0027asis\u0027, message \u003d F, warning \u003d F, fig.retina \u003d 2", + "type": "textarea", + "description": "" + }, + "zeppelin.R.shiny.portRange": { + "name": "zeppelin.R.shiny.portRange", + "value": ":", + "type": "string", + "description": "Shiny app would launch a web app at some port, this property is to specify the portRange via format \u0027\u003cstart\u003e:\u003cend\u003e\u0027, e.g. \u00275000:5001\u0027. By default it is \u0027:\u0027 which means any port" + }, + "zeppelin.kotlin.shortenTypes": { + "name": "zeppelin.kotlin.shortenTypes", + "value": true, + "type": "checkbox", + "description": "Show short types instead of full, e.g. List\u003cString\u003e or kotlin.collections.List\u003ckotlin.String\u003e" + }, + "JAVA_HOME": { + "name": "JAVA_HOME", + "value": "/usr/lib/jvm/java-8-openjdk-amd64", + "type": "textarea" + }, + "spark.sql.view.maxNestedViewDepth": { + "name": "spark.sql.view.maxNestedViewDepth", + "value": "5000", + "type": "textarea" + } + }, + "status": "READY", + "interpreterGroup": [ + { + "name": "spark", + "class": "org.apache.zeppelin.spark.SparkInterpreter", + "defaultInterpreter": true, + "editor": { + "language": "scala", + "editOnDblClick": false, + "completionKey": "TAB", + "completionSupport": true + } + }, + { + "name": "sql", + "class": "org.apache.zeppelin.spark.SparkSqlInterpreter", + "defaultInterpreter": false, + "editor": { + "language": "sql", + "editOnDblClick": false, + "completionKey": "TAB", + "completionSupport": true + } + }, + { + "name": "pyspark", + "class": "org.apache.zeppelin.spark.PySparkInterpreter", + "defaultInterpreter": false, + "editor": { + "language": "python", + "editOnDblClick": false, + "completionKey": "TAB", + "completionSupport": true + } + }, + { + "name": "ipyspark", + "class": "org.apache.zeppelin.spark.IPySparkInterpreter", + "defaultInterpreter": false, + "editor": { + "language": "python", + "editOnDblClick": false, + "completionSupport": true, + "completionKey": "TAB" + } + }, + { + "name": "r", + "class": "org.apache.zeppelin.spark.SparkRInterpreter", + "defaultInterpreter": false, + "editor": { + "language": "r", + "editOnDblClick": false, + "completionSupport": false, + "completionKey": "TAB" + } + }, + { + "name": "ir", + "class": "org.apache.zeppelin.spark.SparkIRInterpreter", + "defaultInterpreter": false, + "editor": { + "language": "r", + "editOnDblClick": false, + "completionSupport": true, + "completionKey": "TAB" + } + }, + { + "name": "shiny", + "class": "org.apache.zeppelin.spark.SparkShinyInterpreter", + "defaultInterpreter": false, + "editor": { + "language": "r", + "editOnDblClick": false, + "completionSupport": true, + "completionKey": "TAB" + } + }, + { + "name": "kotlin", + "class": "org.apache.zeppelin.spark.KotlinSparkInterpreter", + "defaultInterpreter": false, + "editor": { + "language": "kotlin", + "editOnDblClick": false, + "completionKey": "TAB", + "completionSupport": false + } + } + ], + "dependencies": [ + { + "groupArtifactVersion": "/opt/spark/jars/sedona-core-3.0_2.12-1.3.1-incubating.jar", + "local": false, + "exclusions": [] + }, + { + "groupArtifactVersion": "/opt/spark/jars/sedona-viz-3.0_2.12-1.3.1-incubating.jar", + "local": false + }, + { + "groupArtifactVersion": "/opt/spark/jars/sedona-sql-3.0_2.12-1.3.1-incubating.jar", + "local": false, + "exclusions": [] + }, + { + "groupArtifactVersion": "/opt/spark/jars/geotools-wrapper-1.3.0-27.2.jar", + "local": false + } + ], + "option": { + "remote": true, + "port": -1, + "perNote": "shared", + "perUser": "shared", + "isExistingProcess": false, + "setPermission": false, + "owners": [], + "isUserImpersonate": false + } + }, + "sh": { + "id": "sh", + "name": "sh", + "group": "sh", + "properties": { + "shell.command.timeout.millisecs": { + "name": "shell.command.timeout.millisecs", + "value": "60000", + "type": "number", + "description": "Shell command time out in millisecs. Default \u003d 60000" + }, + "shell.command.timeout.check.interval": { + "name": "shell.command.timeout.check.interval", + "value": "60000", + "type": "number", + "description": "Shell command output check interval in millisecs. Default \u003d 10000" + }, + "shell.working.directory.user.home": { + "name": "shell.working.directory.user.home", + "value": false, + "type": "checkbox", + "description": "If this set to true, the shell\u0027s working directory will be set to user home" + }, + "zeppelin.shell.auth.type": { + "name": "zeppelin.shell.auth.type", + "value": "", + "type": "string", + "description": "If auth type is needed, Example: KERBEROS" + }, + "zeppelin.shell.keytab.location": { + "name": "zeppelin.shell.keytab.location", + "value": "", + "type": "string", + "description": "Kerberos keytab location" + }, + "zeppelin.shell.principal": { + "name": "zeppelin.shell.principal", + "value": "", + "type": "string", + "description": "Kerberos principal" + }, + "zeppelin.shell.interpolation": { + "name": "zeppelin.shell.interpolation", + "value": false, + "type": "checkbox", + "description": "Enable ZeppelinContext variable interpolation into paragraph text" + }, + "zeppelin.concurrency.max": { + "name": "zeppelin.concurrency.max", + "value": "10", + "type": "number", + "description": "Max concurrency of shell interpreter" + }, + "zeppelin.terminal.ip.mapping": { + "name": "zeppelin.terminal.ip.mapping", + "value": "", + "type": "string", + "description": "Internal and external IP mapping of zeppelin server" + } + }, + "status": "READY", + "interpreterGroup": [ + { + "name": "sh", + "class": "org.apache.zeppelin.shell.ShellInterpreter", + "defaultInterpreter": true, + "editor": { + "language": "sh", + "editOnDblClick": false, + "completionSupport": false + } + }, + { + "name": "terminal", + "class": "org.apache.zeppelin.shell.TerminalInterpreter", + "defaultInterpreter": false, + "editor": { + "language": "sh", + "editOnDblClick": false, + "completionSupport": false + }, + "config": { + "checkEmpty": false + } + } + ], + "dependencies": [], + "option": { + "remote": true, + "port": -1, + "isExistingProcess": false, + "setPermission": false, + "owners": [], + "isUserImpersonate": false + } + }, + "md": { + "id": "md", + "name": "md", + "group": "md", + "properties": { + "markdown.parser.type": { + "name": "markdown.parser.type", + "value": "flexmark", + "type": "string", + "description": "Markdown Parser Type. Available values: pegdown, markdown4j, flexmark. Default \u003d flexmark" + } + }, + "status": "READY", + "interpreterGroup": [ + { + "name": "md", + "class": "org.apache.zeppelin.markdown.Markdown", + "defaultInterpreter": false, + "editor": { + "language": "markdown", + "editOnDblClick": true, + "completionSupport": false + } + } + ], + "dependencies": [], + "option": { + "remote": true, + "port": -1, + "isExistingProcess": false, + "setPermission": false, + "owners": [], + "isUserImpersonate": false + } + }, + "hazelcastjet": { + "id": "hazelcastjet", + "name": "hazelcastjet", + "group": "hazelcastjet", + "properties": {}, + "status": "READY", + "interpreterGroup": [ + { + "name": "hazelcastjet", + "class": "org.apache.zeppelin.hazelcastjet.HazelcastJetInterpreter", + "defaultInterpreter": true, + "editor": { + "language": "java", + "editOnDblClick": false + } + } + ], + "dependencies": [], + "option": { + "remote": true, + "port": -1, + "isExistingProcess": false, + "setPermission": false, + "owners": [], + "isUserImpersonate": false + } + }, + "alluxio": { + "id": "alluxio", + "name": "alluxio", + "group": "alluxio", + "properties": { + "alluxio.master.hostname": { + "name": "alluxio.master.hostname", + "value": "localhost", + "type": "string", + "description": "Alluxio master hostname" + }, + "alluxio.master.port": { + "name": "alluxio.master.port", + "value": "19998", + "type": "number", + "description": "Alluxio master port" + } + }, + "status": "READY", + "interpreterGroup": [ + { + "name": "alluxio", + "class": "org.apache.zeppelin.alluxio.AlluxioInterpreter", + "defaultInterpreter": false, + "editor": { + "editOnDblClick": false, + "completionSupport": true + } + } + ], + "dependencies": [], + "option": { + "remote": true, + "port": -1, + "isExistingProcess": false, + "setPermission": false, + "owners": [], + "isUserImpersonate": false + } + }, + "bigquery": { + "id": "bigquery", + "name": "bigquery", + "group": "bigquery", + "properties": { + "zeppelin.bigquery.project_id": { + "name": "zeppelin.bigquery.project_id", + "value": " ", + "type": "string", + "description": "Google Project ID" + }, + "zeppelin.bigquery.wait_time": { + "name": "zeppelin.bigquery.wait_time", + "value": "5000", + "type": "number", + "description": "Query timeout in Milliseconds" + }, + "zeppelin.bigquery.max_no_of_rows": { + "name": "zeppelin.bigquery.max_no_of_rows", + "value": "100000", + "type": "number", + "description": "Maximum number of rows to fetch from BigQuery" + }, + "zeppelin.bigquery.sql_dialect": { + "name": "zeppelin.bigquery.sql_dialect", + "value": "", + "type": "string", + "description": "BigQuery SQL dialect (standardSQL or legacySQL). If empty, query prefix like \u0027#standardSQL\u0027 can be used." + } + }, + "status": "READY", + "interpreterGroup": [ + { + "name": "sql", + "class": "org.apache.zeppelin.bigquery.BigQueryInterpreter", + "defaultInterpreter": false, + "editor": { + "language": "sql", + "editOnDblClick": false, + "completionSupport": false + } + } + ], + "dependencies": [], + "option": { + "remote": true, + "port": -1, + "isExistingProcess": false, + "setPermission": false, + "owners": [], + "isUserImpersonate": false + } + }, + "mongodb": { + "id": "mongodb", + "name": "mongodb", + "group": "mongodb", + "properties": { + "mongo.shell.path": { + "name": "mongo.shell.path", + "value": "mongo", + "type": "string", + "description": "MongoDB shell local path" + }, + "mongo.shell.command.table.limit": { + "name": "mongo.shell.command.table.limit", + "value": "1000", + "type": "number", + "description": "Limit of documents displayed in a table" + }, + "mongo.shell.command.timeout": { + "name": "mongo.shell.command.timeout", + "value": "60000", + "type": "number", + "description": "MongoDB shell command timeout" + }, + "mongo.server.host": { + "name": "mongo.server.host", + "value": "localhost", + "type": "string", + "description": "MongoDB server host to connect to" + }, + "mongo.server.port": { + "name": "mongo.server.port", + "value": "27017", + "type": "number", + "description": "MongoDB server port to connect to" + }, + "mongo.server.database": { + "name": "mongo.server.database", + "value": "test", + "type": "string", + "description": "MongoDB database name" + }, + "mongo.server.authenticationDatabase": { + "name": "mongo.server.authenticationDatabase", + "value": "", + "type": "string", + "description": "MongoDB database name for authentication" + }, + "mongo.server.username": { + "name": "mongo.server.username", + "value": "", + "type": "string", + "description": "Username for authentication" + }, + "mongo.server.password": { + "name": "mongo.server.password", + "value": "", + "type": "password", + "description": "Password for authentication" + }, + "mongo.interpreter.concurrency.max": { + "name": "mongo.interpreter.concurrency.max", + "value": "10", + "type": "number", + "description": "Max count of scheduler concurrency" + } + }, + "status": "READY", + "interpreterGroup": [ + { + "name": "mongodb", + "class": "org.apache.zeppelin.mongodb.MongoDbInterpreter", + "defaultInterpreter": false, + "editor": { + "language": "javascript", + "editOnDblClick": false, + "completionKey": "TAB" + } + } + ], + "dependencies": [], + "option": { + "remote": true, + "port": -1, + "isExistingProcess": false, + "setPermission": false, + "owners": [], + "isUserImpersonate": false + } + }, + "hbase": { + "id": "hbase", + "name": "hbase", + "group": "hbase", + "properties": { + "hbase.home": { + "name": "hbase.home", + "value": "/usr/lib/hbase/", + "type": "string", + "description": "Installation directory of HBase" + }, + "hbase.ruby.sources": { + "name": "hbase.ruby.sources", + "value": "lib/ruby", + "type": "string", + "description": "Path to Ruby scripts relative to \u0027hbase.home\u0027" + }, + "zeppelin.hbase.test.mode": { + "name": "zeppelin.hbase.test.mode", + "value": false, + "type": "checkbox", + "description": "Disable checks for unit and manual tests" + } + }, + "status": "READY", + "interpreterGroup": [ + { + "name": "hbase", + "class": "org.apache.zeppelin.hbase.HbaseInterpreter", + "defaultInterpreter": false, + "editor": { + "editOnDblClick": false, + "completionSupport": false + } + } + ], + "dependencies": [], + "option": { + "remote": true, + "port": -1, + "isExistingProcess": false, + "setPermission": false, + "owners": [], + "isUserImpersonate": false + } + }, + "python": { + "id": "python", + "name": "python", + "group": "python", + "properties": { + "zeppelin.python": { + "name": "zeppelin.python", + "value": "python3", + "type": "string", + "description": "Python binary executable path. It is set to python by default.(assume python is in your $PATH)" + }, + "zeppelin.python.maxResult": { + "name": "zeppelin.python.maxResult", + "value": "1000", + "type": "number", + "description": "Max number of dataframe rows to display." + }, + "zeppelin.python.useIPython": { + "name": "zeppelin.python.useIPython", + "value": true, + "type": "checkbox", + "description": "Whether use IPython when it is available in `%python`" + }, + "zeppelin.ipython.launch.timeout": { + "name": "zeppelin.ipython.launch.timeout", + "value": "30000", + "type": "number", + "description": "Time out for ipython launch" + }, + "zeppelin.ipython.grpc.message_size": { + "name": "zeppelin.ipython.grpc.message_size", + "value": "33554432", + "type": "number", + "description": "grpc message size, default is 32M" + } + }, + "status": "READY", + "interpreterGroup": [ + { + "name": "python", + "class": "org.apache.zeppelin.python.PythonInterpreter", + "defaultInterpreter": true, + "editor": { + "language": "python", + "editOnDblClick": false, + "completionSupport": true + } + }, + { + "name": "ipython", + "class": "org.apache.zeppelin.python.IPythonInterpreter", + "defaultInterpreter": false, + "editor": { + "language": "python", + "editOnDblClick": false, + "completionKey": "TAB", + "completionSupport": true + } + }, + { + "name": "sql", + "class": "org.apache.zeppelin.python.PythonInterpreterPandasSql", + "defaultInterpreter": false, + "editor": { + "language": "sql", + "editOnDblClick": false, + "completionKey": "TAB", + "completionSupport": false + } + }, + { + "name": "conda", + "class": "org.apache.zeppelin.python.PythonCondaInterpreter", + "defaultInterpreter": false, + "editor": { + "language": "sh", + "editOnDblClick": false, + "completionSupport": false + } + }, + { + "name": "docker", + "class": "org.apache.zeppelin.python.PythonDockerInterpreter", + "defaultInterpreter": false, + "editor": { + "language": "sh", + "editOnDblClick": false, + "completionSupport": false + } + } + ], + "dependencies": [], + "option": { + "remote": true, + "port": -1, + "perNote": "shared", + "perUser": "shared", + "isExistingProcess": false, + "setPermission": false, + "owners": [], + "isUserImpersonate": false + } + }, + "sap": { + "id": "sap", + "name": "sap", + "group": "sap", + "properties": { + "universe.api.url": { + "name": "universe.api.url", + "value": "http://localhost:6405/biprws", + "type": "url", + "description": "API url of Universe" + }, + "universe.user": { + "name": "universe.user", + "value": "", + "type": "string", + "description": "Username for API of Universe" + }, + "universe.password": { + "name": "universe.password", + "value": "", + "type": "password", + "description": "Password for API of Universe" + }, + "universe.authType": { + "name": "universe.authType", + "value": "secEnterprise", + "type": "string", + "description": "Type of authentication for API of Universe. Available values: secEnterprise, secLDAP, secWinAD, secSAPR3" + }, + "universe.queryTimeout": { + "name": "universe.queryTimeout", + "value": "7200000", + "type": "number", + "description": "Query timeout for API of Universe" + }, + "universe.interpolation": { + "name": "universe.interpolation", + "value": false, + "type": "checkbox", + "description": "Enable ZeppelinContext variable interpolation into paragraph text" + }, + "universe.concurrent.use": { + "name": "universe.concurrent.use", + "value": true, + "type": "checkbox", + "description": "Use parallel scheduler" + }, + "universe.concurrent.maxConnection": { + "name": "universe.concurrent.maxConnection", + "value": "10", + "type": "number", + "description": "Number of concurrent execution" + } + }, + "status": "READY", + "interpreterGroup": [ + { + "name": "universe", + "class": "org.apache.zeppelin.sap.UniverseInterpreter", + "defaultInterpreter": true, + "editor": { + "editOnDblClick": false, + "completionKey": "TAB", + "completionSupport": false + } + } + ], + "dependencies": [], + "option": { + "remote": true, + "port": -1, + "isExistingProcess": false, + "setPermission": false, + "owners": [], + "isUserImpersonate": false + } + }, + "kotlin": { + "id": "kotlin", + "name": "kotlin", + "group": "kotlin", + "properties": { + "zeppelin.kotlin.maxResult": { + "name": "zeppelin.kotlin.maxResult", + "value": "1000", + "type": "number", + "description": "Max number of dataframe rows to display." + }, + "zeppelin.kotlin.shortenTypes": { + "name": "zeppelin.kotlin.shortenTypes", + "value": true, + "type": "checkbox", + "description": "Show short types instead of full, e.g. List\u003cString\u003e or kotlin.collections.List\u003ckotlin.String\u003e" + } + }, + "status": "READY", + "interpreterGroup": [ + { + "name": "kotlin", + "class": "org.apache.zeppelin.kotlin.KotlinInterpreter", + "defaultInterpreter": true, + "editor": { + "language": "kotlin", + "editOnDblClick": false + } + } + ], + "dependencies": [], + "option": { + "remote": true, + "port": -1, + "isExistingProcess": false, + "setPermission": false, + "owners": [], + "isUserImpersonate": false + } + }, + "flink-cmd": { + "id": "flink-cmd", + "name": "flink-cmd", + "group": "flink-cmd", + "properties": { + "FLINK_HOME": { + "name": "FLINK_HOME", + "value": "", + "type": "string", + "description": "Location of flink distribution" + } + }, + "status": "READY", + "interpreterGroup": [ + { + "name": "cmd", + "class": "org.apache.zeppelin.flink.cmd.FlinkCmdInterpreter", + "defaultInterpreter": false, + "editor": { + "language": "sh", + "editOnDblClick": false, + "completionSupport": false + } + } + ], + "dependencies": [], + "option": { + "remote": true, + "port": -1, + "isExistingProcess": false, + "setPermission": false, + "owners": [], + "isUserImpersonate": false + } + }, + "scalding": { + "id": "scalding", + "name": "scalding", + "group": "scalding", + "properties": { + "args.string": { + "name": "args.string", + "value": "--local --repl", + "type": "textarea", + "description": "Arguments for scalding REPL" + }, + "max.open.instances": { + "name": "max.open.instances", + "value": "50", + "type": "number", + "description": "Maximum number of open interpreter instances" + } + }, + "status": "READY", + "interpreterGroup": [ + { + "name": "scalding", + "class": "org.apache.zeppelin.scalding.ScaldingInterpreter", + "defaultInterpreter": false + } + ], + "dependencies": [], + "option": { + "remote": true, + "port": -1, + "isExistingProcess": false, + "setPermission": false, + "owners": [], + "isUserImpersonate": false + } + }, + "flink": { + "id": "flink", + "name": "flink", + "group": "flink", + "properties": { + "FLINK_HOME": { + "name": "FLINK_HOME", + "value": "", + "type": "string", + "description": "Location of flink distribution" + }, + "HADOOP_CONF_DIR": { + "name": "HADOOP_CONF_DIR", + "value": "", + "type": "string", + "description": "Location of hadoop conf (core-site.xml, hdfs-site.xml and etc.)" + }, + "HIVE_CONF_DIR": { + "name": "HIVE_CONF_DIR", + "value": "", + "type": "string", + "description": "Location of hive conf (hive-site.xml)" + }, + "flink.execution.mode": { + "name": "flink.execution.mode", + "value": "local", + "type": "string", + "description": "Execution mode, it could be local|remote|yarn" + }, + "flink.execution.remote.host": { + "name": "flink.execution.remote.host", + "value": "", + "type": "string", + "description": "Host name of running JobManager. Only used for remote mode" + }, + "flink.execution.remote.port": { + "name": "flink.execution.remote.port", + "value": "", + "type": "number", + "description": "Port of running JobManager. Only used for remote mode" + }, + "jobmanager.memory.process.size": { + "name": "jobmanager.memory.process.size", + "value": "1024m", + "type": "text", + "description": "Memory for JobManager, e.g. 1024m" + }, + "taskmanager.memory.process.size": { + "name": "taskmanager.memory.process.size", + "value": "1024m", + "type": "text", + "description": "Memory for TaskManager, e.g. 1024m" + }, + "taskmanager.numberOfTaskSlots": { + "name": "taskmanager.numberOfTaskSlots", + "value": "1", + "type": "number", + "description": "Number of slot per TaskManager" + }, + "local.number-taskmanager": { + "name": "local.number-taskmanager", + "value": "4", + "type": "number", + "description": "Number of TaskManager in local mode" + }, + "yarn.application.name": { + "name": "yarn.application.name", + "value": "Zeppelin Flink Session", + "type": "string", + "description": "Yarn app name" + }, + "yarn.application.queue": { + "name": "yarn.application.queue", + "value": "default", + "type": "string", + "description": "Yarn queue name" + }, + "zeppelin.flink.uiWebUrl": { + "name": "zeppelin.flink.uiWebUrl", + "value": "", + "type": "string", + "description": "User specified Flink JobManager url, it could be used in remote mode where Flink cluster is already started, or could be used as url template, e.g. https://knox-server:8443/gateway/cluster-topo/yarn/proxy/{{applicationId}}/ where {{applicationId}} would be replaced with yarn app id" + }, + "zeppelin.flink.run.asLoginUser": { + "name": "zeppelin.flink.run.asLoginUser", + "value": true, + "type": "checkbox", + "description": "Whether run flink job as the zeppelin login user, it is only applied when running flink job in hadoop yarn cluster and shiro is enabled" + }, + "flink.udf.jars": { + "name": "flink.udf.jars", + "value": "", + "type": "string", + "description": "Flink udf jars (comma separated), Zeppelin will register udfs in this jar for user automatically, these udf jars could be either local files or hdfs files if you have hadoop installed, the udf name is the class name" + }, + "flink.udf.jars.packages": { + "name": "flink.udf.jars.packages", + "value": "", + "type": "string", + "description": "Packages (comma separated) that would be searched for the udf defined in `flink.udf.jars`" + }, + "flink.execution.jars": { + "name": "flink.execution.jars", + "value": "", + "type": "string", + "description": "Additional user jars (comma separated), these jars could be either local files or hdfs files if you have hadoop installed" + }, + "flink.execution.packages": { + "name": "flink.execution.packages", + "value": "", + "type": "string", + "description": "Additional user packages (comma separated), e.g. flink connector packages" + }, + "zeppelin.flink.scala.color": { + "name": "zeppelin.flink.scala.color", + "value": true, + "type": "checkbox", + "description": "Whether display scala shell output in colorful format" + }, + "zeppelin.flink.enableHive": { + "name": "zeppelin.flink.enableHive", + "value": false, + "type": "checkbox", + "description": "Whether enable hive" + }, + "zeppelin.flink.hive.version": { + "name": "zeppelin.flink.hive.version", + "value": "2.3.4", + "type": "string", + "description": "Hive version that you would like to connect" + }, + "zeppelin.flink.module.enableHive": { + "name": "zeppelin.flink.module.enableHive", + "value": false, + "type": "checkbox", + "description": "Whether enable hive module, hive udf take precedence over flink udf if hive module is enabled." + }, + "zeppelin.flink.printREPLOutput": { + "name": "zeppelin.flink.printREPLOutput", + "value": true, + "type": "checkbox", + "description": "Print REPL output" + }, + "zeppelin.flink.maxResult": { + "name": "zeppelin.flink.maxResult", + "value": "1000", + "type": "number", + "description": "Max number of rows returned by sql interpreter." + }, + "zeppelin.pyflink.python": { + "name": "zeppelin.pyflink.python", + "value": "python", + "type": "string", + "description": "Python executable for pyflink" + }, + "flink.interpreter.close.shutdown_cluster": { + "name": "flink.interpreter.close.shutdown_cluster", + "value": true, + "type": "checkbox", + "description": "Whether shutdown flink cluster when close interpreter" + }, + "zeppelin.interpreter.close.cancel_job": { + "name": "zeppelin.interpreter.close.cancel_job", + "value": true, + "type": "checkbox", + "description": "Whether cancel flink job when closing interpreter" + }, + "zeppelin.flink.job.check_interval": { + "name": "zeppelin.flink.job.check_interval", + "value": "1000", + "type": "number", + "description": "Check interval (in milliseconds) to check flink job progress" + }, + "zeppelin.flink.concurrentBatchSql.max": { + "name": "zeppelin.flink.concurrentBatchSql.max", + "value": "10", + "type": "number", + "description": "Max concurrent sql of Batch Sql" + }, + "zeppelin.flink.concurrentStreamSql.max": { + "name": "zeppelin.flink.concurrentStreamSql.max", + "value": "10", + "type": "number", + "description": "Max concurrent sql of Stream Sql" + } + }, + "status": "READY", + "interpreterGroup": [ + { + "name": "flink", + "class": "org.apache.zeppelin.flink.FlinkInterpreter", + "defaultInterpreter": true, + "editor": { + "language": "scala", + "editOnDblClick": false, + "completionKey": "TAB", + "completionSupport": true + } + }, + { + "name": "bsql", + "class": "org.apache.zeppelin.flink.FlinkBatchSqlInterpreter", + "defaultInterpreter": false, + "editor": { + "language": "sql", + "editOnDblClick": false + } + }, + { + "name": "ssql", + "class": "org.apache.zeppelin.flink.FlinkStreamSqlInterpreter", + "defaultInterpreter": false, + "editor": { + "language": "sql", + "editOnDblClick": false + } + }, + { + "name": "pyflink", + "class": "org.apache.zeppelin.flink.PyFlinkInterpreter", + "defaultInterpreter": false, + "editor": { + "language": "python", + "editOnDblClick": false, + "completionKey": "TAB", + "completionSupport": true + } + }, + { + "name": "ipyflink", + "class": "org.apache.zeppelin.flink.IPyFlinkInterpreter", + "defaultInterpreter": false, + "editor": { + "language": "python", + "editOnDblClick": false, + "completionKey": "TAB", + "completionSupport": true + } + } + ], + "dependencies": [], + "option": { + "remote": true, + "port": -1, + "isExistingProcess": false, + "setPermission": false, + "owners": [], + "isUserImpersonate": false + } + }, + "angular": { + "id": "angular", + "name": "angular", + "group": "angular", + "properties": {}, + "status": "READY", + "interpreterGroup": [ + { + "name": "angular", + "class": "org.apache.zeppelin.angular.AngularInterpreter", + "defaultInterpreter": false, + "editor": { + "editOnDblClick": true, + "completionSupport": false + } + }, + { + "name": "ng", + "class": "org.apache.zeppelin.angular.AngularInterpreter", + "defaultInterpreter": false, + "editor": { + "editOnDblClick": true, + "completionSupport": false + } + } + ], + "dependencies": [], + "option": { + "remote": true, + "port": -1, + "isExistingProcess": false, + "setPermission": false, + "owners": [], + "isUserImpersonate": false + } + }, + "ksql": { + "id": "ksql", + "name": "ksql", + "group": "ksql", + "properties": { + "ksql.url": { + "name": "ksql.url", + "value": "http://localhost:8088", + "type": "string", + "description": "KSQL Endpoint base URL" + } + }, + "status": "READY", + "interpreterGroup": [ + { + "name": "ksql", + "class": "org.apache.zeppelin.ksql.KSQLInterpreter", + "defaultInterpreter": false, + "editor": { + "language": "sql", + "editOnDblClick": false, + "completionSupport": false + } + } + ], + "dependencies": [], + "option": { + "remote": true, + "port": -1, + "isExistingProcess": false, + "setPermission": false, + "owners": [], + "isUserImpersonate": false + } + }, + "r": { + "id": "r", + "name": "r", + "group": "r", + "properties": { + "zeppelin.R.knitr": { + "name": "zeppelin.R.knitr", + "value": true, + "type": "checkbox", + "description": "Whether use knitr or not" + }, + "zeppelin.R.cmd": { + "name": "zeppelin.R.cmd", + "value": "R", + "type": "string", + "description": "R binary executable path" + }, + "zeppelin.R.maxResult": { + "name": "zeppelin.R.maxResult", + "value": "1000", + "type": "number", + "description": "Max number of dataframe rows to display." + }, + "zeppelin.R.image.width": { + "name": "zeppelin.R.image.width", + "value": "100%", + "type": "number", + "description": "Image width of R plotting" + }, + "zeppelin.R.render.options": { + "name": "zeppelin.R.render.options", + "value": "out.format \u003d \u0027html\u0027, comment \u003d NA, echo \u003d FALSE, results \u003d \u0027asis\u0027, message \u003d F, warning \u003d F, fig.retina \u003d 2", + "type": "textarea", + "description": "" + }, + "zeppelin.R.shiny.portRange": { + "name": "zeppelin.R.shiny.portRange", + "value": ":", + "type": "string", + "description": "Shiny app would launch a web app at some port, this property is to specify the portRange via format \u0027\u003cstart\u003e:\u003cend\u003e\u0027, e.g. \u00275000:5001\u0027. By default it is \u0027:\u0027 which means any port" + }, + "zeppelin.R.shiny.iframe_width": { + "name": "zeppelin.R.shiny.iframe_width", + "value": "100%", + "type": "text", + "description": "Width of iframe of R shiny app" + }, + "zeppelin.R.shiny.iframe_height": { + "name": "zeppelin.R.shiny.iframe_height", + "value": "500px", + "type": "text", + "description": "Height of iframe of R shiny app" + } + }, + "status": "READY", + "interpreterGroup": [ + { + "name": "r", + "class": "org.apache.zeppelin.r.RInterpreter", + "defaultInterpreter": false, + "editor": { + "language": "r", + "editOnDblClick": false, + "completionSupport": true + } + }, + { + "name": "ir", + "class": "org.apache.zeppelin.r.IRInterpreter", + "defaultInterpreter": false, + "editor": { + "language": "r", + "editOnDblClick": false, + "completionSupport": true + } + }, + { + "name": "shiny", + "class": "org.apache.zeppelin.r.ShinyInterpreter", + "defaultInterpreter": false, + "editor": { + "language": "r", + "editOnDblClick": false, + "completionSupport": true + } + } + ], + "dependencies": [], + "option": { + "remote": true, + "port": -1, + "isExistingProcess": false, + "setPermission": false, + "owners": [], + "isUserImpersonate": false + } + }, + "livy": { + "id": "livy", + "name": "livy", + "group": "livy", + "properties": { + "zeppelin.livy.url": { + "name": "zeppelin.livy.url", + "value": "http://localhost:8998", + "type": "url", + "description": "The URL for Livy Server." + }, + "zeppelin.livy.session.create_timeout": { + "name": "zeppelin.livy.session.create_timeout", + "value": "120", + "type": "number", + "description": "Livy Server create session timeout (seconds)." + }, + "livy.spark.driver.cores": { + "name": "livy.spark.driver.cores", + "value": "", + "type": "number", + "description": "Driver cores. ex) 1, 2" + }, + "livy.spark.driver.memory": { + "name": "livy.spark.driver.memory", + "value": "", + "type": "string", + "description": "Driver memory. ex) 512m, 32g" + }, + "livy.spark.executor.instances": { + "name": "livy.spark.executor.instances", + "value": "", + "type": "number", + "description": "Executor instances. ex) 1, 4" + }, + "livy.spark.executor.cores": { + "name": "livy.spark.executor.cores", + "value": "", + "type": "number", + "description": "Num cores per executor. ex) 1, 4" + }, + "livy.spark.executor.memory": { + "name": "livy.spark.executor.memory", + "value": "", + "type": "string", + "description": "Executor memory per worker instance. ex) 512m, 32g" + }, + "livy.spark.dynamicAllocation.enabled": { + "name": "livy.spark.dynamicAllocation.enabled", + "value": false, + "type": "checkbox", + "description": "Use dynamic resource allocation" + }, + "livy.spark.dynamicAllocation.cachedExecutorIdleTimeout": { + "name": "livy.spark.dynamicAllocation.cachedExecutorIdleTimeout", + "value": "", + "type": "string", + "description": "Remove an executor which has cached data blocks" + }, + "livy.spark.dynamicAllocation.minExecutors": { + "name": "livy.spark.dynamicAllocation.minExecutors", + "value": "", + "type": "number", + "description": "Lower bound for the number of executors if dynamic allocation is enabled." + }, + "livy.spark.dynamicAllocation.initialExecutors": { + "name": "livy.spark.dynamicAllocation.initialExecutors", + "value": "", + "type": "number", + "description": "Initial number of executors to run if dynamic allocation is enabled." + }, + "livy.spark.dynamicAllocation.maxExecutors": { + "name": "livy.spark.dynamicAllocation.maxExecutors", + "value": "", + "type": "number", + "description": "Upper bound for the number of executors if dynamic allocation is enabled." + }, + "zeppelin.livy.principal": { + "name": "zeppelin.livy.principal", + "value": "", + "type": "string", + "description": "Kerberos principal to authenticate livy" + }, + "zeppelin.livy.keytab": { + "name": "zeppelin.livy.keytab", + "value": "", + "type": "textarea", + "description": "Kerberos keytab to authenticate livy" + }, + "zeppelin.livy.pull_status.interval.millis": { + "name": "zeppelin.livy.pull_status.interval.millis", + "value": "1000", + "type": "number", + "description": "The interval for checking paragraph execution status" + }, + "zeppelin.livy.maxLogLines": { + "name": "zeppelin.livy.maxLogLines", + "value": "1000", + "type": "number", + "description": "Max number of lines of logs" + }, + "livy.spark.jars.packages": { + "name": "livy.spark.jars.packages", + "value": "", + "type": "textarea", + "description": "Adding extra libraries to livy interpreter" + }, + "zeppelin.livy.displayAppInfo": { + "name": "zeppelin.livy.displayAppInfo", + "value": true, + "type": "checkbox", + "description": "Whether display app info" + }, + "zeppelin.livy.restart_dead_session": { + "name": "zeppelin.livy.restart_dead_session", + "value": false, + "type": "checkbox", + "description": "Whether restart a dead session" + }, + "zeppelin.livy.spark.sql.maxResult": { + "name": "zeppelin.livy.spark.sql.maxResult", + "value": "1000", + "type": "number", + "description": "Max number of Spark SQL result to display." + }, + "zeppelin.livy.spark.sql.field.truncate": { + "name": "zeppelin.livy.spark.sql.field.truncate", + "value": true, + "type": "checkbox", + "description": "If true, truncate field values longer than 20 characters." + }, + "zeppelin.livy.concurrentSQL": { + "name": "zeppelin.livy.concurrentSQL", + "value": false, + "type": "checkbox", + "description": "Execute multiple SQL concurrently if set true." + }, + "zeppelin.livy.tableWithUTFCharacter": { + "name": "zeppelin.livy.tableWithUTFCharacter", + "value": false, + "type": "checkbox", + "description": "If database contains UTF characters then set this as true." + } + }, + "status": "READY", + "interpreterGroup": [ + { + "name": "spark", + "class": "org.apache.zeppelin.livy.LivySparkInterpreter", + "defaultInterpreter": true, + "editor": { + "language": "scala", + "editOnDblClick": false, + "completionKey": "TAB", + "completionSupport": true + } + }, + { + "name": "sql", + "class": "org.apache.zeppelin.livy.LivySparkSQLInterpreter", + "defaultInterpreter": false, + "editor": { + "language": "sql", + "editOnDblClick": false, + "completionKey": "TAB", + "completionSupport": true + } + }, + { + "name": "pyspark", + "class": "org.apache.zeppelin.livy.LivyPySparkInterpreter", + "defaultInterpreter": false, + "editor": { + "language": "python", + "editOnDblClick": false, + "completionKey": "TAB", + "completionSupport": true + } + }, + { + "name": "pyspark3", + "class": "org.apache.zeppelin.livy.LivyPySpark3Interpreter", + "defaultInterpreter": false, + "editor": { + "language": "python", + "editOnDblClick": false, + "completionKey": "TAB", + "completionSupport": true + } + }, + { + "name": "sparkr", + "class": "org.apache.zeppelin.livy.LivySparkRInterpreter", + "defaultInterpreter": false, + "editor": { + "language": "r", + "editOnDblClick": false, + "completionKey": "TAB", + "completionSupport": true + } + }, + { + "name": "shared", + "class": "org.apache.zeppelin.livy.LivySharedInterpreter", + "defaultInterpreter": false + } + ], + "dependencies": [], + "option": { + "remote": true, + "port": -1, + "perNote": "shared", + "perUser": "scoped", + "isExistingProcess": false, + "setPermission": false, + "owners": [], + "isUserImpersonate": false + } + }, + "neo4j": { + "id": "neo4j", + "name": "neo4j", + "group": "neo4j", + "properties": { + "neo4j.url": { + "name": "neo4j.url", + "value": "bolt://localhost:7687", + "type": "string", + "description": "The Neo4j\u0027s BOLT url." + }, + "neo4j.database": { + "name": "neo4j.database", + "value": "", + "type": "string", + "description": "The Neo4j target database, if empty use the dafault db." + }, + "neo4j.multi.statement": { + "name": "neo4j.multi.statement", + "value": "true", + "type": "string", + "description": "Enables the multi statement management, if true it computes multiple queries separated by semicolon." + }, + "neo4j.auth.type": { + "name": "neo4j.auth.type", + "value": "BASIC", + "type": "string", + "description": "The Neo4j\u0027s authentication type (NONE, BASIC)." + }, + "neo4j.auth.user": { + "name": "neo4j.auth.user", + "value": "", + "type": "string", + "description": "The Neo4j user name." + }, + "neo4j.auth.password": { + "name": "neo4j.auth.password", + "value": "", + "type": "string", + "description": "The Neo4j user password." + }, + "neo4j.max.concurrency": { + "name": "neo4j.max.concurrency", + "value": "50", + "type": "string", + "description": "Max concurrency call from Zeppelin to Neo4j server." + } + }, + "status": "READY", + "interpreterGroup": [ + { + "name": "neo4j", + "class": "org.apache.zeppelin.graph.neo4j.Neo4jCypherInterpreter", + "defaultInterpreter": false, + "editor": { + "editOnDblClick": false + } + } + ], + "dependencies": [], + "option": { + "remote": true, + "port": -1, + "isExistingProcess": false, + "setPermission": false, + "owners": [], + "isUserImpersonate": false + } + }, + "groovy": { + "id": "groovy", + "name": "groovy", + "group": "groovy", + "properties": { + "GROOVY_CLASSES": { + "name": "GROOVY_CLASSES", + "value": "", + "type": "textarea", + "description": "The path for custom groovy classes location. If empty `./interpreter/groovy/classes`" + } + }, + "status": "READY", + "interpreterGroup": [ + { + "name": "groovy", + "class": "org.apache.zeppelin.groovy.GroovyInterpreter", + "defaultInterpreter": false, + "editor": { + "editOnDblClick": false, + "completionSupport": false + } + } + ], + "dependencies": [], + "option": { + "remote": true, + "port": -1, + "isExistingProcess": false, + "setPermission": false, + "owners": [], + "isUserImpersonate": false + } + }, + "cassandra": { + "id": "cassandra", + "name": "cassandra", + "group": "cassandra", + "properties": { + "cassandra.hosts": { + "name": "cassandra.hosts", + "value": "localhost", + "type": "textarea", + "description": "Comma separated Cassandra hosts (DNS name or IP address). Default \u003d localhost. Ex: \u0027192.168.0.12,node2,node3\u0027" + }, + "cassandra.native.port": { + "name": "cassandra.native.port", + "value": "9042", + "type": "number", + "description": "Cassandra native port. Default \u003d 9042" + }, + "cassandra.protocol.version": { + "name": "cassandra.protocol.version", + "value": "DEFAULT", + "type": "string", + "description": "Cassandra protocol version. Default \u003d auto-detect" + }, + "cassandra.cluster": { + "name": "cassandra.cluster", + "value": "Test Cluster", + "type": "string", + "description": "Cassandra cluster name. Default \u003d \u0027Test Cluster\u0027" + }, + "cassandra.keyspace": { + "name": "cassandra.keyspace", + "value": "system", + "type": "string", + "description": "Cassandra keyspace name. Default \u003d \u0027system\u0027" + }, + "cassandra.compression.protocol": { + "name": "cassandra.compression.protocol", + "value": "NONE", + "type": "string", + "description": "Cassandra compression protocol. Available values: NONE, SNAPPY, LZ4. Default \u003d NONE" + }, + "cassandra.credentials.username": { + "name": "cassandra.credentials.username", + "value": "none", + "type": "string", + "description": "Cassandra credentials username. Default \u003d \u0027none\u0027" + }, + "cassandra.credentials.password": { + "name": "cassandra.credentials.password", + "value": "none", + "type": "password", + "description": "Cassandra credentials password. Default \u003d \u0027none\u0027" + }, + "cassandra.load.balancing.policy": { + "name": "cassandra.load.balancing.policy", + "value": "DEFAULT", + "type": "string", + "description": "Class name for Load Balancing Policy. Default \u003d DefaultLoadBalancingPolicy" + }, + "cassandra.retry.policy": { + "name": "cassandra.retry.policy", + "value": "DEFAULT", + "type": "string", + "description": "Class name for Retry Policy. Default \u003d DefaultRetryPolicy" + }, + "cassandra.reconnection.policy": { + "name": "cassandra.reconnection.policy", + "value": "DEFAULT", + "type": "string", + "description": "Class name for Reconnection Policy. Default \u003d ExponentialReconnectionPolicy" + }, + "cassandra.speculative.execution.policy": { + "name": "cassandra.speculative.execution.policy", + "value": "DEFAULT", + "type": "string", + "description": "Class name for Speculative Execution Policy. Default \u003d NoSpeculativeExecutionPolicy" + }, + "cassandra.interpreter.parallelism": { + "name": "cassandra.interpreter.parallelism", + "value": "10", + "type": "number", + "description": "Cassandra interpreter parallelism.Default \u003d 10" + }, + "cassandra.max.schema.agreement.wait.second": { + "name": "cassandra.max.schema.agreement.wait.second", + "value": "10", + "type": "number", + "description": "Cassandra max schema agreement wait in second.Default \u003d ProtocolOptions.DEFAULT_MAX_SCHEMA_AGREEMENT_WAIT_SECONDS" + }, + "cassandra.pooling.connection.per.host.local": { + "name": "cassandra.pooling.connection.per.host.local", + "value": "1", + "type": "number", + "description": "Cassandra connections per host local. Protocol V3 and above default \u003d 1" + }, + "cassandra.pooling.connection.per.host.remote": { + "name": "cassandra.pooling.connection.per.host.remote", + "value": "1", + "type": "number", + "description": "Cassandra connections per host remote. Protocol V3 and above default \u003d 1" + }, + "cassandra.pooling.max.request.per.connection": { + "name": "cassandra.pooling.max.request.per.connection", + "value": "1024", + "type": "number", + "description": "Cassandra max requests per connection. Protocol V3 and above default \u003d 1024" + }, + "cassandra.pooling.pool.timeout.millisecs": { + "name": "cassandra.pooling.pool.timeout.millisecs", + "value": "5000", + "type": "number", + "description": "Cassandra pool time out in millisecs. Default \u003d 5000" + }, + "cassandra.pooling.heartbeat.interval.seconds": { + "name": "cassandra.pooling.heartbeat.interval.seconds", + "value": "30", + "type": "number", + "description": "Cassandra pool heartbeat interval in secs. Default \u003d 30" + }, + "cassandra.query.default.consistency": { + "name": "cassandra.query.default.consistency", + "value": "ONE", + "type": "string", + "description": "Cassandra query default consistency level. Default \u003d ONE" + }, + "cassandra.query.default.serial.consistency": { + "name": "cassandra.query.default.serial.consistency", + "value": "SERIAL", + "type": "string", + "description": "Cassandra query default serial consistency level. Default \u003d SERIAL" + }, + "cassandra.query.default.fetchSize": { + "name": "cassandra.query.default.fetchSize", + "value": "5000", + "type": "number", + "description": "Cassandra query default fetch size. Default \u003d 5000" + }, + "cassandra.socket.connection.timeout.millisecs": { + "name": "cassandra.socket.connection.timeout.millisecs", + "value": "5000", + "type": "number", + "description": "Cassandra socket default connection timeout in millisecs. Default \u003d 5000" + }, + "cassandra.socket.read.timeout.millisecs": { + "name": "cassandra.socket.read.timeout.millisecs", + "value": "12000", + "type": "number", + "description": "Cassandra socket read timeout in millisecs. Default \u003d 12000" + }, + "cassandra.socket.tcp.no_delay": { + "name": "cassandra.socket.tcp.no_delay", + "value": true, + "type": "checkbox", + "description": "Cassandra socket TCP no delay. Default \u003d true" + }, + "cassandra.ssl.enabled": { + "name": "cassandra.ssl.enabled", + "value": false, + "type": "checkbox", + "description": "Cassandra SSL" + }, + "cassandra.ssl.truststore.path": { + "name": "cassandra.ssl.truststore.path", + "value": "none", + "type": "string", + "description": "Cassandra truststore path. Default \u003d none" + }, + "cassandra.ssl.truststore.password": { + "name": "cassandra.ssl.truststore.password", + "value": "none", + "type": "password", + "description": "Cassandra truststore password. Default \u003d none" + }, + "cassandra.format.output": { + "name": "cassandra.format.output", + "value": "human", + "type": "string", + "description": "Output format: human-readable, or strict CQL. Default \u003d human" + }, + "cassandra.format.locale": { + "name": "cassandra.format.locale", + "value": "en_US", + "type": "string", + "description": "Locale for formatting of output data. Default \u003d en_US" + }, + "cassandra.format.timezone": { + "name": "cassandra.format.timezone", + "value": "UTC", + "type": "string", + "description": "Timezone for output of time/date-related values. Default \u003d UTC" + }, + "cassandra.format.timestamp": { + "name": "cassandra.format.timestamp", + "value": "yyyy-MM-dd\u0027T\u0027HH:mm:ss.SSSXXX", + "type": "string", + "description": "Format string for timestamp columns" + }, + "cassandra.format.date": { + "name": "cassandra.format.date", + "value": "yyyy-MM-dd", + "type": "string", + "description": "Format string for date columns" + }, + "cassandra.format.time": { + "name": "cassandra.format.time", + "value": "HH:mm:ss.SSS", + "type": "string", + "description": "Format string for time columns" + }, + "cassandra.format.float_precision": { + "name": "cassandra.format.float_precision", + "value": "5", + "type": "number", + "description": "Precision for formatting of float values" + }, + "cassandra.format.double_precision": { + "name": "cassandra.format.double_precision", + "value": "12", + "type": "number", + "description": "Precision for formatting of double values" + }, + "cassandra.format.decimal_precision": { + "name": "cassandra.format.decimal_precision", + "value": "-1", + "type": "number", + "description": "Precision for formatting of decimal values (by default, show everything)" + } + }, + "status": "READY", + "interpreterGroup": [ + { + "name": "cassandra", + "class": "org.apache.zeppelin.cassandra.CassandraInterpreter", + "defaultInterpreter": false, + "editor": { + "editOnDblClick": false + } + } + ], + "dependencies": [], + "option": { + "remote": true, + "port": -1, + "isExistingProcess": false, + "setPermission": false, + "owners": [], + "isUserImpersonate": false + } + }, + "sparql": { + "id": "sparql", + "name": "sparql", + "group": "sparql", + "properties": { + "sparql.engine": { + "name": "sparql.engine", + "value": "jena", + "type": "string", + "description": "The sparql engine to use for the queries. Default: jena" + }, + "sparql.endpoint": { + "name": "sparql.endpoint", + "value": "http://dbpedia.org/sparql", + "type": "string", + "description": "Complete URL of the endpoint. Default: http://dbpedia.org/sparql" + }, + "sparql.replaceURIs": { + "name": "sparql.replaceURIs", + "value": true, + "type": "checkbox", + "description": "Replace the URIs in the result with the prefixes. Default: true" + }, + "sparql.removeDatatypes": { + "name": "sparql.removeDatatypes", + "value": true, + "type": "checkbox", + "description": "Remove the datatypes from Literals so Zeppelin can use the values. Default: true" + } + }, + "status": "READY", + "interpreterGroup": [ + { + "name": "sparql", + "class": "org.apache.zeppelin.sparql.SparqlInterpreter", + "defaultInterpreter": false, + "editor": { + "language": "sparql", + "editOnDblClick": false, + "completionKey": "TAB" + } + } + ], + "dependencies": [], + "option": { + "remote": true, + "port": -1, + "isExistingProcess": false, + "setPermission": false, + "owners": [], + "isUserImpersonate": false + } + }, + "kylin": { + "id": "kylin", + "name": "kylin", + "group": "kylin", + "properties": { + "kylin.api.url": { + "name": "kylin.api.url", + "value": "http://localhost:7070/kylin/api/query", + "type": "url", + "description": "Kylin API" + }, + "kylin.api.user": { + "name": "kylin.api.user", + "value": "ADMIN", + "type": "string", + "description": "Kylin username" + }, + "kylin.api.password": { + "name": "kylin.api.password", + "value": "KYLIN", + "type": "password", + "description": "Kylin password" + }, + "kylin.query.project": { + "name": "kylin.query.project", + "value": "learn_kylin", + "type": "textarea", + "description": "Default Kylin project name" + }, + "kylin.query.offset": { + "name": "kylin.query.offset", + "value": "0", + "type": "number", + "description": "Kylin query offset" + }, + "kylin.query.limit": { + "name": "kylin.query.limit", + "value": "5000", + "type": "number", + "description": "Kylin query limit" + }, + "kylin.query.ispartial": { + "name": "kylin.query.ispartial", + "value": true, + "type": "checkbox", + "description": "Kylin query partial flag, deprecated" + } + }, + "status": "READY", + "interpreterGroup": [ + { + "name": "kylin", + "class": "org.apache.zeppelin.kylin.KylinInterpreter", + "defaultInterpreter": false, + "editor": { + "language": "sql", + "editOnDblClick": false, + "completionSupport": true + } + } + ], + "dependencies": [], + "option": { + "remote": true, + "port": -1, + "isExistingProcess": false, + "setPermission": false, + "owners": [], + "isUserImpersonate": false + } + } + }, + "interpreterRepositories": [ + { + "id": "central", + "type": "default", + "url": "https://repo1.maven.org/maven2/", + "host": "repo1.maven.org", + "protocol": "https", + "releasePolicy": { + "enabled": true, + "updatePolicy": "daily", + "checksumPolicy": "warn" + }, + "snapshotPolicy": { + "enabled": true, + "updatePolicy": "daily", + "checksumPolicy": "warn" + }, + "mirroredRepositories": [], + "repositoryManager": false + }, + { + "id": "local", + "type": "default", + "url": "file:///root/.m2/repository", + "host": "", + "protocol": "file", + "releasePolicy": { + "enabled": true, + "updatePolicy": "daily", + "checksumPolicy": "warn" + }, + "snapshotPolicy": { + "enabled": true, + "updatePolicy": "daily", + "checksumPolicy": "warn" + }, + "mirroredRepositories": [], + "repositoryManager": false + }, + { + "id": "local", + "type": "default", + "url": "file:///home/zeppelin/.m2/repository", + "host": "", + "protocol": "file", + "releasePolicy": { + "enabled": true, + "updatePolicy": "daily", + "checksumPolicy": "warn" + }, + "snapshotPolicy": { + "enabled": true, + "updatePolicy": "daily", + "checksumPolicy": "warn" + }, + "mirroredRepositories": [], + "repositoryManager": false + } + ] +} \ No newline at end of file diff --git a/docker/spark-sedona-zeppelin/zeppelin/conf/log4j.properties b/docker/spark-sedona-zeppelin/zeppelin/conf/log4j.properties new file mode 100644 index 0000000000..345d02e332 --- /dev/null +++ b/docker/spark-sedona-zeppelin/zeppelin/conf/log4j.properties @@ -0,0 +1,5 @@ +log4j.rootCategory=INFO, console +log4j.appender.console=org.apache.log4j.ConsoleAppender +log4j.appender.console.target=System.err +log4j.appender.console.layout=org.apache.log4j.PatternLayout +log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n \ No newline at end of file diff --git a/docker/spark-sedona-zeppelin/zeppelin/conf/notebook-authorization.json b/docker/spark-sedona-zeppelin/zeppelin/conf/notebook-authorization.json new file mode 100644 index 0000000000..58b51b937e --- /dev/null +++ b/docker/spark-sedona-zeppelin/zeppelin/conf/notebook-authorization.json @@ -0,0 +1,34 @@ +{ + "authInfo": { + "2HZHF91BX": { + "readers": [], + "owners": [], + "writers": [], + "runners": [] + }, + "2J233SDGY": { + "readers": [], + "owners": [], + "writers": [], + "runners": [] + }, + "2HWZWUD8H": { + "readers": [], + "owners": [], + "writers": [], + "runners": [] + }, + "2J42ZSEA5": { + "readers": [], + "owners": [], + "writers": [], + "runners": [] + }, + "2HZVNAN4N": { + "readers": [], + "owners": [], + "writers": [], + "runners": [] + } + } +} \ No newline at end of file diff --git a/docker/spark-sedona-zeppelin/zeppelin/conf/zeppelin-env.sh b/docker/spark-sedona-zeppelin/zeppelin/conf/zeppelin-env.sh new file mode 100644 index 0000000000..39e9559625 --- /dev/null +++ b/docker/spark-sedona-zeppelin/zeppelin/conf/zeppelin-env.sh @@ -0,0 +1,5 @@ +export PYSPARK_PYTHON=python3 +export PYSPARK_DRIVER_PYTHON=python3 +export PYTHONPATH=/opt/spark/python/ +# export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/ +# export PYSPARK_SUBMIT_ARGS="--master spark://spark-master:7077 pyspark-shell" \ No newline at end of file diff --git a/docker/spark-sedona-zeppelin/zeppelin/helium/sedona-zeppelin.json b/docker/spark-sedona-zeppelin/zeppelin/helium/sedona-zeppelin.json new file mode 100644 index 0000000000..b1d46ef1ca --- /dev/null +++ b/docker/spark-sedona-zeppelin/zeppelin/helium/sedona-zeppelin.json @@ -0,0 +1,8 @@ +{ + "type": "VISUALIZATION", + "name": "sedona-zeppelin", + "description": "Zeppelin visualization support for Sedona", + "artifact": "/opt/zeppelin/sedona_mapviz_widget", + "license": "BSD-2-Clause", + "icon": "" + } \ No newline at end of file diff --git a/docker/spark-sedona-zeppelin/zeppelin/notebook/geospark-zeppelin-demo_2J42ZSEA5.zpln b/docker/spark-sedona-zeppelin/zeppelin/notebook/geospark-zeppelin-demo_2J42ZSEA5.zpln new file mode 100644 index 0000000000..6e38ecdc28 --- /dev/null +++ b/docker/spark-sedona-zeppelin/zeppelin/notebook/geospark-zeppelin-demo_2J42ZSEA5.zpln @@ -0,0 +1,374 @@ +{ + "paragraphs": [ + { + "text": "import org.apache.sedona.sql.utils.SedonaSQLRegistrator\nimport org.apache.sedona.viz.sql.utils.SedonaVizRegistrator\n\n// Zeppelin creates and injects sc (SparkContext) and sqlContext (HiveContext or SqlContext)\n// So you don\u0027t need create them manually\n\nSedonaSQLRegistrator.registerAll(spark)\nSedonaVizRegistrator.registerAll(spark)\n\nvar pointdf \u003d spark.read.format(\"csv\").option(\"delimiter\", \",\").option(\"header\", \"false\").load(\"/opt/workspace/examples/data/arealm.csv\")\npointdf.show()\npointdf.registerTempTable(\"pointtable\")\nspark.sql(\n \"\"\"\n |CREATE OR REPLACE TEMP VIEW pointtable AS\n |SELECT ST_Point(cast(pointtable._c0 as Decimal(24,20)),cast(pointtable._c1 as Decimal(24,20))) as shape\n |FROM pointtable\n \"\"\".stripMargin)\n// spark.table(\"pointtable\").show()\nspark.sql(\n \"\"\"\n |CREATE OR REPLACE TEMP VIEW pointtable AS\n |SELECT *\n |FROM pointtable\n |WHERE ST_Contains(ST_PolygonFromEnvelope(-126.790180,24.863836,-64.630926,50.000),shape)\n \"\"\".stripMargin)\n// spark.table(\"pointtable\").show()\nspark.sql(\n \"\"\"\n |CREATE OR REPLACE TEMP VIEW boundtable AS\n |SELECT ST_Envelope_Aggr(shape) as bound FROM pointtable\n \"\"\".stripMargin)\nspark.table(\"pointtable\").show()\n// spark.sql(\n// \"\"\"\n// |CREATE OR REPLACE TEMP VIEW pixels AS\n// |SELECT pixel, shape FROM pointtable\n// |LATERAL VIEW EXPLODE(ST_Pixelize(ST_Transform(shape, \u0027epsg:4326\u0027,\u0027epsg:3857\u0027), 256, 256, (SELECT ST_Transform(bound, \u0027epsg:4326\u0027,\u0027epsg:3857\u0027) FROM boundtable))) AS pixel\n// \"\"\".stripMargin)\n// spark.table(\"pixels\").show()\n// spark.sql(\n// \"\"\"\n// |CREATE OR REPLACE TEMP VIEW pixelaggregates AS\n// |SELECT pixel, count(*) as weight\n// |FROM pixels\n// |GROUP BY pixel\n// \"\"\".stripMargin)\n// spark.sql(\n// \"\"\"\n// |CREATE OR REPLACE TEMP VIEW images AS\n// |SELECT ST_EncodeImage(ST_Render(pixel, ST_Colorize(weight, (SELECT max(weight) FROM pixelaggregates)))) AS image, (SELECT ST_AsText(bound) FROM boundtable) AS boundary\n// |FROM pixelaggregates\n// \"\"\".stripMargin)\n// spark.table(\"images\").show()\nspark.sql(\n \"\"\"\n |CREATE OR REPLACE TEMP VIEW wktpoint AS\n |SELECT ST_AsText(shape) as geom\n |FROM pointtable\n \"\"\".stripMargin)", + "user": "anonymous", + "dateUpdated": "2023-06-22 14:58:48.701", + "progress": 100, + "config": { + "tableHide": false, + "editorSetting": { + "language": "scala", + "editOnDblClick": false, + "completionKey": "TAB", + "completionSupport": true + }, + "colWidth": 12.0, + "editorMode": "ace/mode/scala", + "fontSize": 9.0, + "results": {}, + "enabled": true + }, + "settings": { + "params": {}, + "forms": {} + }, + "results": { + "code": "SUCCESS", + "msg": [ + { + "type": "TEXT", + "data": "\u001b[33mwarning: \u001b[0mthere was one deprecation warning (since 2.0.0); for details, enable `:setting -deprecation\u0027 or `:replay -deprecation\u0027\n+--------------+----------+---------+--------------+--------------+\n| _c0| _c1| _c2| _c3| _c4|\n+--------------+----------+---------+--------------+--------------+\n|testattribute0|-88.331492|32.324142|testattribute1|testattribute2|\n|testattribute0|-88.175933|32.360763|testattribute1|testattribute2|\n|testattribute0|-88.388954|32.357073|testattribute1|testattribute2|\n|testattribute0|-88.221102| 32.35078|testattribute1|testattribute2|\n|testattribute0|-88.323995|32.950671|testattribute1|testattribute2|\n|testattribute0|-88.231077|32.700812|testattribute1|testattribute2|\n|testattribute0|-88.349276|32.548266|testattribute1|testattribute2|\n|testattribute0|-88.304259|32.488903|testattribute1|testattribute2|\n|testattribute0|-88.182481| 32.59966|testattribute1|testattribute2|\n|testattribute0|-86.955186|32.617088|testattribute1|testattribute2|\n|testattribute0|-87.059169|32.378484|testattribute1|testattribute2|\n|testattribute0|-87.251219|32.052598|testattribute1|testattribute2|\n|testattribute0|-87.534883|31.934442|testattribute1|testattribute2|\n|testattribute0| -87.49702|31.894541|testattribute1|testattribute2|\n|testattribute0|-88.280149|33.325473|testattribute1|testattribute2|\n|testattribute0|-88.153618|33.261297|testattribute1|testattribute2|\n|testattribute0|-86.988768|31.866884|testattribute1|testattribute2|\n|testattribute0|-87.586341|31.959751|testattribute1|testattribute2|\n|testattribute0| -87.40708|31.887472|testattribute1|testattribute2|\n|testattribute0| -87.43091|31.901283|testattribute1|testattribute2|\n+--------------+----------+---------+--------------+--------------+\nonly showing top 20 rows\n\n+-----+\n|shape|\n+-----+\n+-----+\n\nimport org.apache.sedona.sql.utils.SedonaSQLRegistrator\nimport org.apache.sedona.viz.sql.utils.SedonaVizRegistrator\n\u001b[1m\u001b[34mpointdf\u001b[0m: \u001b[1m\u001b[32morg.apache.spark.sql.DataFrame\u001b[0m \u003d [_c0: string, _c1: string ... 3 more fields]\n\u001b[1m\u001b[34mres19\u001b[0m: \u001b[1m\u001b[32morg.apache.spark.sql.DataFrame\u001b[0m \u003d []\n" + } + ] + }, + "apps": [], + "runtimeInfos": { + "jobUrl": { + "propertyName": "jobUrl", + "label": "SPARK JOB", + "tooltip": "View in Spark web UI", + "group": "spark", + "values": [ + { + "jobUrl": "http://54558ad3dd73:4040/jobs/job?id\u003d44" + }, + { + "jobUrl": "http://54558ad3dd73:4040/jobs/job?id\u003d45" + }, + { + "jobUrl": "http://54558ad3dd73:4040/jobs/job?id\u003d46" + } + ], + "interpreterSettingId": "spark" + } + }, + "progressUpdateIntervalMs": 500, + "jobName": "paragraph_1687444265621_1224803770", + "id": "20190227-203333_1886473378", + "dateCreated": "2023-06-22 14:31:05.621", + "dateStarted": "2023-06-22 14:58:48.711", + "dateFinished": "2023-06-22 14:58:49.666", + "status": "FINISHED" + }, + { + "text": "%sql\nSELECT *\nFROM wktpoint", + "user": "anonymous", + "dateUpdated": "2023-06-22 14:53:29.591", + "progress": 0, + "config": { + "editorSetting": { + "language": "sql", + "editOnDblClick": false, + "completionKey": "TAB", + "completionSupport": true + }, + "colWidth": 12.0, + "editorMode": "ace/mode/sql", + "fontSize": 9.0, + "results": { + "0": { + "graph": { + "mode": "apache-sedona", + "height": 300.0, + "optionOpen": true, + "setting": { + "table": { + "tableGridState": {}, + "tableColumnTypeState": { + "names": { + "geom": "string" + }, + "updated": false + }, + "tableOptionSpecHash": "[{\"name\":\"useFilter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable filter for columns\"},{\"name\":\"showPagination\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable pagination for better navigation\"},{\"name\":\"showAggregationFooter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable a footer for displaying aggregated values\"}]", + "tableOptionValue": { + "useFilter": false, + "showPagination": false, + "showAggregationFooter": false + }, + "updated": false, + "initialized": false + }, + "geospark-zeppelin": { + "geometry": { + "name": "geom", + "index": 0.0, + "aggr": "sum" + }, + "info": { + "name": "geom", + "index": 0.0, + "aggr": "sum" + } + }, + "apache-sedona": { + "geometry": { + "name": "geom", + "index": 0.0, + "aggr": "sum" + } + } + } + }, + "helium": {} + } + }, + "enabled": true + }, + "settings": { + "params": {}, + "forms": {} + }, + "results": { + "code": "SUCCESS", + "msg": [ + { + "type": "TABLE", + "data": "geom\n" + } + ] + }, + "apps": [], + "runtimeInfos": { + "jobUrl": { + "propertyName": "jobUrl", + "label": "SPARK JOB", + "tooltip": "View in Spark web UI", + "group": "spark", + "values": [ + { + "jobUrl": "http://54558ad3dd73:4040/jobs/job?id\u003d43" + } + ], + "interpreterSettingId": "spark" + } + }, + "progressUpdateIntervalMs": 500, + "jobName": "paragraph_1687444265622_467794492", + "id": "20190227-203351_1519829707", + "dateCreated": "2023-06-22 14:31:05.622", + "dateStarted": "2023-06-22 14:53:16.148", + "dateFinished": "2023-06-22 14:53:16.344", + "status": "FINISHED" + }, + { + "text": "%sql\nSELECT *, \u0027I am the map center!\u0027\nFROM images", + "user": "anonymous", + "dateUpdated": "2023-06-22 14:54:47.992", + "progress": 0, + "config": { + "editorSetting": { + "language": "sql", + "editOnDblClick": false, + "completionKey": "TAB", + "completionSupport": true + }, + "colWidth": 12.0, + "editorMode": "ace/mode/sql", + "fontSize": 9.0, + "results": { + "0": { + "graph": { + "mode": "apache-sedona", + "height": 300.0, + "optionOpen": true, + "setting": { + "table": { + "tableGridState": { + "columns": [ + { + "name": "st_encodeimage(image)", + "visible": true, + "width": "*", + "sort": { + "priority": 0.0, + "direction": "asc" + }, + "filters": [ + {} + ], + "pinned": "" + }, + { + "name": "1.0", + "visible": true, + "width": "*", + "sort": {}, + "filters": [ + {} + ], + "pinned": "" + } + ], + "scrollFocus": {}, + "selection": [], + "grouping": { + "grouping": [], + "aggregations": [], + "rowExpandedStates": {} + }, + "treeView": {}, + "pagination": { + "paginationCurrentPage": 1.0, + "paginationPageSize": 250.0 + } + }, + "tableColumnTypeState": { + "names": { + "image": "string", + "boundary": "string", + "I am the map center!": "string" + }, + "updated": false + }, + "tableOptionSpecHash": "[{\"name\":\"useFilter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable filter for columns\"},{\"name\":\"showPagination\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable pagination for better navigation\"},{\"name\":\"showAggregationFooter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable a footer for displaying aggregated values\"}]", + "tableOptionValue": { + "useFilter": false, + "showPagination": false, + "showAggregationFooter": false + }, + "updated": false, + "initialized": false + }, + "zeppelin-leaflet": {}, + "multiBarChart": { + "rotate": { + "degree": "-45" + }, + "xLabelStatus": "default" + }, + "stackedAreaChart": { + "rotate": { + "degree": "-45" + }, + "xLabelStatus": "default" + }, + "lineChart": { + "rotate": { + "degree": "-45" + }, + "xLabelStatus": "default" + }, + "geospark-zeppelin": { + "geometry": { + "name": "boundary", + "index": 1.0, + "aggr": "sum" + }, + "info": { + "name": "I am the map center!", + "index": 2.0, + "aggr": "sum" + }, + "mapimage": { + "name": "image", + "index": 0.0, + "aggr": "sum" + } + }, + "apache-sedona": { + "mapimage": { + "name": "image", + "index": 0.0, + "aggr": "sum" + }, + "geometry": { + "name": "boundary", + "index": 1.0, + "aggr": "sum" + }, + "info": { + "name": "I am the map center!", + "index": 2.0, + "aggr": "sum" + } + } + }, + "keys": [], + "groups": [], + "values": [] + }, + "helium": {} + } + }, + "enabled": true + }, + "settings": { + "params": {}, + "forms": {} + }, + "results": { + "code": "SUCCESS", + "msg": [ + { + "type": "TABLE", + "data": "image\tboundary\tI am the map center!\n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\tPOLYGON ((-124.742775 24.95862, -124.742775 49.367211, -66.984485 49.367211, -66.984485 24.95862, -124.742775 24.95862))\tI am the map center!\n" + }, + { + "type": "TEXT", + "data": "" + } + ] + }, + "apps": [], + "runtimeInfos": {}, + "progressUpdateIntervalMs": 500, + "jobName": "paragraph_1687444265623_1123937400", + "id": "20190227-203400_1171762279", + "dateCreated": "2023-06-22 14:31:05.623", + "status": "READY" + }, + { + "text": "%sql\n", + "user": "anonymous", + "dateUpdated": "2023-06-22 14:31:05.624", + "progress": 0, + "config": { + "editorSetting": { + "language": "sql", + "editOnDblClick": false, + "completionKey": "TAB", + "completionSupport": true + }, + "colWidth": 12.0, + "editorMode": "ace/mode/sql", + "fontSize": 9.0, + "results": {}, + "enabled": true + }, + "settings": { + "params": {}, + "forms": {} + }, + "apps": [], + "runtimeInfos": {}, + "progressUpdateIntervalMs": 500, + "jobName": "paragraph_1687444265624_499340644", + "id": "20190303-221004_314008204", + "dateCreated": "2023-06-22 14:31:05.624", + "status": "READY" + } + ], + "name": "geospark-zeppelin-demo", + "id": "2J42ZSEA5", + "defaultInterpreterGroup": "spark", + "version": "0.10.1", + "noteParams": {}, + "noteForms": {}, + "angularObjects": {}, + "config": { + "isZeppelinNotebookCronEnable": false + }, + "info": {} +} \ No newline at end of file diff --git a/docker/spark-sedona-zeppelin/zeppelin/notebook/sedona-vez demo.json b/docker/spark-sedona-zeppelin/zeppelin/notebook/sedona-vez demo.json new file mode 100644 index 0000000000..748f9f7763 --- /dev/null +++ b/docker/spark-sedona-zeppelin/zeppelin/notebook/sedona-vez demo.json @@ -0,0 +1 @@ +{"paragraphs":[{"text":"import org.datasyslab.geosparksql.utils.GeoSparkSQLRegistrator\nimport org.datasyslab.geosparkviz.sql.utils.GeoSparkVizRegistrator\n\n// Zeppelin creates and injects sc (SparkContext) and sqlContext (HiveContext or SqlContext)\n// So you don't need create them manually\n\nGeoSparkSQLRegistrator.registerAll(spark)\nGeoSparkVizRegistrator.registerAll(spark)\n\nvar pointdf = spark.read.format(\"csv\").option(\"delimiter\", \",\").option(\"header\", \"false\").load(\"/Users/jiayu/Downloads/arealm.csv\")\npointdf.show()\npointdf.registerTempTable(\"pointtable\")\nspark.sql(\n \"\"\"\n |CREATE OR REPLACE TEMP VIEW pointtable AS\n |SELECT ST_Point(cast(pointtable._c0 as Decimal(24,20)),cast(pointtable._c1 as Decimal(24,20))) as shape\n |FROM pointtable\n \"\"\".stripMargin)\nspark.sql(\n \"\"\"\n |CREATE OR REPLACE TEMP VIEW pointtable AS\n |SELECT *\n |FROM pointtable\n |WHERE ST_Contains(ST_PolygonFromEnvelope(-126.790180,24.863836,-64.630926,50.000),shape)\n \"\"\".stripMargin)\nspark.sql(\n \"\"\"\n |CREATE OR REPLACE TEMP VIEW boundtable AS\n |SELECT ST_Envelope_Aggr(shape) as bound FROM pointtable\n \"\"\".stripMargin)\nspark.sql(\n \"\"\"\n |CREATE OR REPLACE TEMP VIEW pixels AS\n |SELECT pixel, shape FROM pointtable\n |LATERAL VIEW ST_Pixelize(ST_Transform(shape, 'epsg:4326','epsg:3857'), 256, 256, (SELECT ST_Transform(bound, 'epsg:4326','epsg:3857') FROM boundtable)) AS pixel\n \"\"\".stripMargin)\nspark.sql(\n \"\"\"\n |CREATE OR REPLACE TEMP VIEW pixelaggregates AS\n |SELECT pixel, count(*) as weight\n |FROM pixels\n |GROUP BY pixel\n \"\"\".stripMargin)\nspark.sql(\n \"\"\"\n |CREATE OR REPLACE TEMP VIEW images AS\n |SELECT ST_EncodeImage(ST_Render(pixel, ST_Colorize(weight, (SELECT max(weight) FROM pixelaggregates)))) AS image, (SELECT ST_AsText(bound) FROM boundtable) AS boundary\n |FROM pixelaggregates\n \"\"\".stripMargin)\nspark.table(\"images\").show()\nspark.sql(\n \"\"\"\n |CREATE OR REPLACE TEMP VIEW wktpoint AS\n |SELECT ST_AsText(shape) as geom\n |FROM pointtable\n \"\"\".stripMargin)","user":"anonymous","dateUpdated":"2019-03-03T22:54:13-0700","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"scala","editOnDblClick":false,"completionKey":"TAB","completionSupport":true},"editorMode":"ace/mode/scala","tableHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"warning: there was one deprecation warning; re-run with -deprecation for details\n+----------+---------+\n| _c0| _c1|\n+----------+---------+\n|-88.331492|32.324142|\n|-88.175933|32.360763|\n|-88.388954|32.357073|\n|-88.221102| 32.35078|\n|-88.323995|32.950671|\n|-88.231077|32.700812|\n|-88.349276|32.548266|\n|-88.304259|32.488903|\n|-88.182481| 32.59966|\n|-86.955186|32.617088|\n|-87.059169|32.378484|\n|-87.251219|32.052598|\n|-87.534883|31.934442|\n| -87.49702|31.894541|\n|-88.280149|33.325473|\n|-88.153618|33.261297|\n|-86.988768|31.866884|\n|-87.586341|31.959751|\n| -87.40708|31.887472|\n| -87.43091|31.901283|\n+----------+---------+\nonly showing top 20 rows\n\n+--------------------+--------------------+\n| image| boundary|\n+--------------------+--------------------+\n|iVBORw0KGgoAAAANS...|POLYGON ((-124.74...|\n+--------------------+--------------------+\n\nimport org.datasyslab.geosparksql.utils.GeoSparkSQLRegistrator\nimport org.datasyslab.geosparkviz.sql.utils.GeoSparkVizRegistrator\npointdf: org.apache.spark.sql.DataFrame = [_c0: string, _c1: string]\nres4: org.apache.spark.sql.DataFrame = []\n"}]},"runtimeInfos":{"jobUrl":{"propertyName":"jobUrl","label":"SPARK JOB","tooltip":"View in Spark web UI","group":"spark","values":["http://192.168.0.3:4040/jobs/job?id=18","http://192.168.0.3:4040/jobs/job?id=19","http://192.168.0.3:4040/jobs/job?id=20","http://192.168.0.3:4040/jobs/job?id=21","http://192.168.0.3:4040/jobs/job?id=22","http://192.168.0.3:4040/jobs/job?id=23","http://192.168.0.3:4040/jobs/job?id=24","http://192.168.0.3:4040/jobs/job?id=25","http://192.168.0.3:4040/jobs/job?id=26"],"interpreterSettingId":"spark"}},"apps":[],"jobName":"paragraph_1551324813005_340705685","id":"20190227-203333_1886473378","dateCreated":"2019-02-27T20:33:33-0700","dateStarted":"2019-03-03T21:50:19-0700","dateFinished":"2019-03-03T21:50:43-0700","status":"FINISHED","progressUpdateIntervalMs":500,"focus":true,"$$hashKey":"object:2323"},{"text":"%sql\nSELECT *\nFROM wktpoint","user":"anonymous","dateUpdated":"2019-03-04T00:19:04-0700","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{"0":{"graph":{"mode":"geospark-zeppelin","height":300,"optionOpen":true,"setting":{"table":{"tableGridState":{},"tableColumnTypeState":{"names":{"geom":"string"},"updated":false},"tableOptionSpecHash":"[{\"name\":\"useFilter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable filter for columns\"},{\"name\":\"showPagination\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable pagination for better navigation\"},{\"name\":\"showAggregationFooter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable a footer for displaying aggregated values\"}]","tableOptionValue":{"useFilter":false,"showPagination":false,"showAggregationFooter":false},"updated":false,"initialized":false},"geospark-zeppelin":{"geometry":{"name":"geom","index":0,"aggr":"sum"},"info":{"name":"geom","index":0,"aggr":"sum"}}}},"helium":{}}},"editorSetting":{"language":"sql","editOnDblClick":false,"completionKey":"TAB","completionSupport":true},"editorMode":"ace/mode/sql"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TABLE","data":"geom\nPOINT (-88.331492 32.324142)\nPOINT (-88.175933 32.360763)\nPOINT (-88.388954 32.357073)\nPOINT (-88.221102 32.35078)\nPOINT (-88.323995 32.950671)\nPOINT (-88.231077 32.700812)\nPOINT (-88.349276 32.548266)\nPOINT (-88.304259 32.488903)\nPOINT (-88.182481 32.59966)\nPOINT (-86.955186 32.617088)\nPOINT (-87.059169 32.378484)\nPOINT (-87.251219 32.052598)\nPOINT (-87.534883 31.934442)\nPOINT (-87.49702 31.894541)\nPOINT (-88.280149 33.325473)\nPOINT (-88.153618 33.261297)\nPOINT (-86.988768 31.866884)\nPOINT (-87.586341 31.959751)\nPOINT (-87.40708 31.887472)\nPOINT (-87.43091 31.901283)\nPOINT (-87.296975 31.98196)\nPOINT (-87.989825 33.138512)\nPOINT (-88.279714 33.056158)\nPOINT (-87.903345 33.325066)\nPOINT (-85.770442 34.635835)\nPOINT (-87.441076 34.732319)\nPOINT (-87.849593 32.514133)\nPOINT (-87.727727 32.072313)\nPOINT (-87.297214 32.136159)\nPOINT (-88.22334 33.401035)\nPOINT (-88.27892 33.424303)\nPOINT (-88.231087 33.427042)\nPOINT (-85.313559 32.475982)\nPOINT (-85.86993 34.252899)\nPOINT (-85.624964 34.5007)\nPOINT (-85.731468 34.570682)\nPOINT (-85.692302 34.624062)\nPOINT (-85.531317 34.515826)\nPOINT (-85.176298 32.712359)\nPOINT (-85.675547 34.702872)\nPOINT (-85.622648 34.726025)\nPOINT (-85.868304 34.280348)\nPOINT (-87.997666 32.067377)\nPOINT (-87.754018 31.933427)\nPOINT (-87.900857 31.505556)\nPOINT (-87.75206 31.835213)\nPOINT (-87.896822 31.825628)\nPOINT (-87.832314 33.079741)\nPOINT (-88.009489 33.048378)\nPOINT (-88.052668 33.025677)\nPOINT (-88.040059 32.890493)\nPOINT (-88.08272 32.858272)\nPOINT (-87.904517 32.638514)\nPOINT (-85.852638 33.485912)\nPOINT (-85.60879 33.499487)\nPOINT (-85.43995 31.831141)\nPOINT (-85.508885 31.662225)\nPOINT (-85.592603 31.919352)\nPOINT (-85.576266 31.37517)\nPOINT (-85.471051 31.477447)\nPOINT (-86.907484 32.898887)\nPOINT (-85.595598 34.295102)\nPOINT (-85.590928 31.391637)\nPOINT (-85.76892 34.244298)\nPOINT (-87.410957 31.428077)\nPOINT (-87.67258 31.350691)\nPOINT (-86.995653 31.8049)\nPOINT (-87.49562 31.768868)\nPOINT (-86.192919 34.396765)\nPOINT (-85.472376 31.306926)\nPOINT (-85.534558 34.198603)\nPOINT (-85.459413 34.083355)\nPOINT (-85.79148 34.243672)\nPOINT (-85.716908 34.234799)\nPOINT (-85.747839 34.189321)\nPOINT (-85.480576 34.24759)\nPOINT (-85.685087 34.138127)\nPOINT (-85.710173 34.117499)\nPOINT (-85.773445 31.555344)\nPOINT (-85.631668 31.606412)\nPOINT (-85.648618 31.450672)\nPOINT (-85.640518 31.453655)\nPOINT (-85.647882 31.517597)\nPOINT (-88.229438 33.640421)\nPOINT (-88.084205 33.908644)\nPOINT (-88.022795 33.530668)\nPOINT (-86.943759 31.032665)\nPOINT (-88.153808 32.169641)\nPOINT (-88.38539 32.044417)\nPOINT (-87.358799 31.322289)\nPOINT (-87.4252 31.536122)\nPOINT (-87.463713 31.157989)\nPOINT (-88.223098 32.08822)\nPOINT (-86.199954 34.42215)\nPOINT (-87.178928 31.031561)\nPOINT (-86.211962 34.481298)\nPOINT (-87.147388 31.241187)\nPOINT (-86.787323 31.136704)\nPOINT (-87.597205 31.004429)\nPOINT (-86.174011 34.198769)\nPOINT (-86.439078 34.478315)\nPOINT (-86.2102 34.266362)\nPOINT (-86.141862 31.50221)\nPOINT (-86.183997 31.47244)\nPOINT (-85.9281 31.386069)\nPOINT (-85.249583 31.255858)\nPOINT (-85.12123 31.295949)\nPOINT (-85.9537 32.949935)\nPOINT (-85.675825 32.910345)\nPOINT (-85.976017 32.920054)\nPOINT (-87.320307 31.523614)\nPOINT (-85.91654 32.810679)\nPOINT (-86.689135 31.692897)\nPOINT (-86.484397 31.882322)\nPOINT (-86.467182 31.950225)\nPOINT (-86.834423 31.775774)\nPOINT (-86.519626 31.810448)\nPOINT (-86.568509 31.802747)\nPOINT (-86.539381 31.780034)\nPOINT (-86.469484 32.942814)\nPOINT (-88.031196 34.320087)\nPOINT (-87.886084 34.435597)\nPOINT (-87.76535 34.519997)\nPOINT (-86.956018 34.792149)\nPOINT (-87.140665 34.87079)\nPOINT (-87.134174 34.77669)\nPOINT (-87.208278 34.803619)\nPOINT (-87.946867 33.679719)\nPOINT (-87.805737 33.632587)\nPOINT (-87.688688 33.728094)\nPOINT (-87.589427 33.846982)\nPOINT (-87.622974 33.822286)\nPOINT (-87.591126 33.808408)\nPOINT (-86.839554 34.868023)\nPOINT (-85.279364 31.42974)\nPOINT (-85.387035 31.558294)\nPOINT (-87.591384 33.677834)\nPOINT (-86.193177 31.125174)\nPOINT (-86.069076 31.122589)\nPOINT (-86.946109 34.810445)\nPOINT (-85.08419 31.602258)\nPOINT (-86.995607 34.803945)\nPOINT (-85.387264 31.482895)\nPOINT (-87.182419 33.814973)\nPOINT (-87.092926 33.740829)\nPOINT (-87.289164 33.854504)\nPOINT (-87.358187 33.900677)\nPOINT (-87.214226 33.956774)\nPOINT (-86.257877 33.831763)\nPOINT (-87.23697 33.670688)\nPOINT (-87.331908 33.984754)\nPOINT (-85.417535 32.246656)\nPOINT (-85.085513 32.178963)\nPOINT (-85.079281 32.126125)\nPOINT (-86.262055 33.693827)\nPOINT (-86.688062 33.961911)\nPOINT (-86.589048 33.960245)\nPOINT (-86.264658 34.626)\nPOINT (-86.292029 34.737364)\nPOINT (-86.139904 34.685524)\nPOINT (-85.835169 34.874204)\nPOINT (-86.04574 34.669234)\nPOINT (-85.732584 34.863339)\nPOINT (-86.141461 34.74407)\nPOINT (-85.705225 34.750445)\nPOINT (-85.712377 34.751851)\nPOINT (-85.99517 34.66097)\nPOINT (-85.998752 34.886373)\nPOINT (-85.915426 34.888336)\nPOINT (-85.915808 34.714939)\nPOINT (-85.945006 34.718875)\nPOINT (-86.461129 34.155822)\nPOINT (-86.558472 34.002858)\nPOINT (-86.481722 34.12128)\nPOINT (-87.529107 33.889491)\nPOINT (-85.82299 34.618513)\nPOINT (-85.990183 34.766026)\nPOINT (-85.897266 34.765103)\nPOINT (-86.078793 34.893002)\nPOINT (-85.807645 34.841702)\nPOINT (-86.036259 34.662036)\nPOINT (-88.274033 30.654661)\nPOINT (-88.248711 30.428442)\nPOINT (-87.392559 34.19413)\nPOINT (-87.547093 34.047505)\nPOINT (-87.574166 34.253648)\nPOINT (-87.630336 34.233353)\nPOINT (-87.633806 34.29214)\nPOINT (-86.270448 32.227196)\nPOINT (-86.115793 32.192337)\nPOINT (-88.328687 31.092389)\nPOINT (-88.231224 31.064117)\nPOINT (-88.35633 30.819372)\nPOINT (-88.35457 30.634836)\nPOINT (-88.312483 31.043354)\nPOINT (-86.26295 32.352382)\nPOINT (-88.12883 30.251176)\nPOINT (-88.258617 30.679254)\nPOINT (-88.095613 30.697563)\nPOINT (-86.303285 32.484327)\nPOINT (-85.999763 32.522367)\nPOINT (-88.238112 31.090917)\nPOINT (-88.152078 31.11831)\nPOINT (-86.334758 32.575647)\nPOINT (-86.195705 32.562671)\nPOINT (-87.665227 34.854558)\nPOINT (-87.299915 34.827757)\nPOINT (-87.78928 34.908502)\nPOINT (-87.34158 34.907976)\nPOINT (-87.301546 34.811941)\nPOINT (-87.529125 34.877648)\nPOINT (-85.858592 33.27232)\nPOINT (-87.671252 34.79503)\nPOINT (-85.684548 33.488647)\nPOINT (-87.516048 32.454481)\nPOINT (-87.383782 32.496119)\nPOINT (-87.405794 32.641742)\nPOINT (-87.327001 32.620843)\nPOINT (-87.318449 32.631468)\nPOINT (-86.252236 33.171583)\nPOINT (-86.972997 34.523103)\nPOINT (-87.105455 34.64664)\nPOINT (-86.110675 33.611043)\nPOINT (-86.324848 33.334643)\nPOINT (-87.059583 34.484611)\nPOINT (-87.103763 34.492224)\nPOINT (-85.404462 32.899)\nPOINT (-85.49 33.0623)\nPOINT (-86.863941 34.259495)\nPOINT (-86.779523 34.298889)\nPOINT (-86.709657 34.294134)\nPOINT (-87.498863 34.592301)\nPOINT (-87.167192 34.680133)\nPOINT (-87.237538 34.637676)\nPOINT (-87.294124 34.44363)\nPOINT (-87.520222 34.367609)\nPOINT (-87.445219 34.536725)\nPOINT (-87.385319 34.539729)\nPOINT (-87.318847 34.481296)\nPOINT (-87.325244 34.759587)\nPOINT (-86.633521 32.818894)\nPOINT (-86.524659 32.755352)\nPOINT (-86.571503 32.796475)\nPOINT (-86.63847 32.860605)\nPOINT (-86.768239 33.054101)\nPOINT (-86.692411 32.808126)\nPOINT (-86.794306 32.918877)\nPOINT (-86.856849 32.946244)\nPOINT (-86.849555 32.927106)\nPOINT (-86.799716 32.919851)\nPOINT (-86.542447 32.937733)\nPOINT (-86.586318 32.940945)\nPOINT (-86.602837 32.901716)\nPOINT (-86.928204 31.633677)\nPOINT (-87.03305 31.296621)\nPOINT (-85.772524 33.824565)\nPOINT (-87.722351 30.260513)\nPOINT (-85.622386 33.919953)\nPOINT (-85.773801 33.821567)\nPOINT (-86.308526 31.62918)\nPOINT (-86.407279 31.920133)\nPOINT (-86.358954 31.551705)\nPOINT (-86.353709 31.595469)\nPOINT (-87.541825 33.261329)\nPOINT (-85.841853 32.14996)\nPOINT (-85.966597 32.131295)\nPOINT (-85.658597 32.161924)\nPOINT (-85.877393 32.214371)\nPOINT (-85.60367 32.216655)\nPOINT (-85.573166 32.170074)\nPOINT (-85.970015 31.807818)\nPOINT (-87.177647 33.295354)\nPOINT (-87.754418 33.14246)\nPOINT (-87.412662 33.573082)\nPOINT (-85.728834 31.860101)\nPOINT (-85.706317 31.823355)\nPOINT (-86.126184 31.747603)\nPOINT (-88.100508 34.094523)\nPOINT (-87.734685 34.120051)\nPOINT (-86.589085 34.680443)\nPOINT (-87.815135 33.935088)\nPOINT (-87.999352 34.111859)\nPOINT (-87.813889 34.155057)\nPOINT (-88.272022 31.4381)\nPOINT (-86.537713 34.719291)\nPOINT (-86.379107 34.750098)\nPOINT (-86.598029 34.866564)\nPOINT (-86.442157 34.603768)\nPOINT (-86.489228 34.505811)\nPOINT (-86.369816 34.5681)\nPOINT (-86.75027 34.844376)\nPOINT (-86.724759 34.647421)\nPOINT (-86.718717 34.782714)\nPOINT (-86.685308 34.774874)\nPOINT (-86.652811 34.77161)\nPOINT (-86.599272 34.736348)\nPOINT (-86.379009 34.749755)\nPOINT (-86.438937 33.334532)\nPOINT (-86.719272 33.206293)\nPOINT (-86.778207 34.745706)\nPOINT (-86.393392 31.170624)\nPOINT (-86.785772 33.296791)\nPOINT (-86.795242 33.34646)\nPOINT (-86.6679 34.698494)\nPOINT (-86.430756 31.245033)\nPOINT (-86.427225 31.31718)\nPOINT (-86.428343 31.095276)\nPOINT (-86.472434 31.285208)\nPOINT (-86.253861 31.284346)\nPOINT (-86.628894 31.513763)\nPOINT (-86.281895 31.508007)\nPOINT (-86.676382 32.181479)\nPOINT (-86.632802 32.160198)\nPOINT (-86.633423 32.156464)\nPOINT (-86.739685 33.554167)\nPOINT (-86.45477 32.175195)\nPOINT (-86.856913 33.477542)\nPOINT (-86.709508 32.469068)\nPOINT (-86.719281 33.577392)\nPOINT (-86.758741 33.565205)\nPOINT (-86.830538 33.555539)\nPOINT (-85.786077 32.298444)\nPOINT (-85.864352 32.459293)\nPOINT (-85.760367 32.465395)\nPOINT (-85.661947 32.352511)\nPOINT (-85.617273 32.277048)\nPOINT (-87.736584 30.545518)\nPOINT (-87.806677 30.383542)\nPOINT (-86.876465 33.501841)\nPOINT (-87.8158 30.807194)\nPOINT (-87.785978 30.757256)\nPOINT (-86.826296 33.525889)\nPOINT (-87.768528 31.278179)\nPOINT (-87.684565 30.73504)\nPOINT (-87.522569 30.414045)\nPOINT (-87.848711 31.042592)\nPOINT (-87.756806 30.253419)\nPOINT (-87.688457 30.24873)\nPOINT (-87.902885 30.605001)\nPOINT (-87.160103 34.280239)\nPOINT (-87.920995 33.309852)\nPOINT (-86.91365 33.479007)\nPOINT (-87.70359 30.485254)\nPOINT (-86.780063 33.565142)\nPOINT (-86.887479 33.48474)\nPOINT (-86.876689 33.493178)\nPOINT (-86.816614 33.245043)\nPOINT (-86.628386 33.181625)\nPOINT (-86.809032 33.814569)\nPOINT (-87.581279 30.2898)\nPOINT (-86.756263 33.501213)\nPOINT (-88.383822 32.349204)\nPOINT (-85.628821 32.032609)\nPOINT (-88.048249 34.758061)\nPOINT (-86.73144 32.18025)\nPOINT (-85.727765 31.733181)\nPOINT (-85.663957 34.184797)\nPOINT (-85.827504 34.92251)\nPOINT (-85.915561 34.61215)\nPOINT (-88.241926 32.709591)\nPOINT (-87.97473 33.480883)\nPOINT (-87.279108 33.627665)\nPOINT (-87.291893 34.431676)\nPOINT (-85.639183 32.415549)\nPOINT (-86.834474 31.153512)\nPOINT (-86.186711 34.389375)\nPOINT (-86.341801 31.473137)\nPOINT (-85.652507 33.280223)\nPOINT (-86.257071 34.802574)\nPOINT (-86.048716 32.44059)\nPOINT (-87.784291 32.302)\nPOINT (-86.687292 34.770874)\nPOINT (-86.953922 33.400892)\nPOINT (-86.733092 33.547855)\nPOINT (-86.717359 33.583832)\nPOINT (-86.124099 34.437269)\nPOINT (-87.725025 34.388238)\nPOINT (-85.041156 31.000585)\nPOINT (-87.082701 34.169986)\nPOINT (-87.219391 32.680325)\nPOINT (-87.693801 30.414064)\nPOINT (-86.620382 31.407858)\nPOINT (-87.931755 32.67465)\nPOINT (-88.205027 33.103257)\nPOINT (-86.3708 34.762286)\nPOINT (-87.981987 33.582388)\nPOINT (-86.325459 34.556721)\nPOINT (-85.591277 34.061312)\nPOINT (-88.38771 31.291488)\nPOINT (-87.504942 32.447505)\nPOINT (-86.308316 33.870472)\nPOINT (-86.598472 33.134679)\nPOINT (-86.587709 32.951804)\nPOINT (-87.004191 34.13678)\nPOINT (-88.025575 31.056138)\nPOINT (-86.677745 33.389966)\nPOINT (-85.451636 32.948546)\nPOINT (-86.728498 33.567304)\nPOINT (-86.481563 32.138831)\nPOINT (-88.154989 32.795201)\nPOINT (-85.754616 31.304855)\nPOINT (-86.818935 34.433497)\nPOINT (-87.221347 33.304955)\nPOINT (-86.450267 31.742019)\nPOINT (-85.953909 32.845653)\nPOINT (-86.393742 34.167866)\nPOINT (-87.218309 33.113756)\nPOINT (-87.588166 34.314393)\nPOINT (-85.777431 33.818477)\nPOINT (-86.945634 32.441588)\nPOINT (-88.104757 34.405693)\nPOINT (-87.907967 32.25723)\nPOINT (-85.251936 31.572208)\nPOINT (-85.964178 34.359783)\nPOINT (-85.650389 32.83594)\nPOINT (-86.615802 34.861497)\nPOINT (-85.862334 33.584871)\nPOINT (-85.281778 31.652543)\nPOINT (-85.706824 33.325629)\nPOINT (-85.838235 34.867976)\nPOINT (-87.768081 30.862751)\nPOINT (-86.983396 34.768058)\nPOINT (-86.599959 34.545151)\nPOINT (-86.797994 31.231891)\nPOINT (-86.747794 33.076058)\nPOINT (-86.879076 33.507319)\nPOINT (-86.915689 31.701685)\nPOINT (-88.384664 32.34299)\nPOINT (-87.215083 34.057359)\nPOINT (-85.665839 32.342602)\nPOINT (-85.475087 32.479419)\nPOINT (-85.812437 34.579143)\nPOINT (-87.625247 30.3822)\nPOINT (-86.489998 33.929028)\nPOINT (-86.247291 34.694335)\nPOINT (-88.075762 34.221227)\nPOINT (-85.469698 31.511232)\nPOINT (-88.029262 31.079208)\nPOINT (-87.517995 32.420758)\nPOINT (-86.293286 34.357907)\nPOINT (-85.891041 34.900988)\nPOINT (-85.171258 32.013258)\nPOINT (-86.210346 31.679173)\nPOINT (-87.65326 33.53571)\nPOINT (-87.918905 31.51441)\nPOINT (-87.493438 34.9251)\nPOINT (-86.776809 32.522333)\nPOINT (-86.761997 34.6751)\nPOINT (-85.263894 31.574663)\nPOINT (-86.954912 31.111595)\nPOINT (-86.609578 34.0938)\nPOINT (-85.594688 33.92309)\nPOINT (-85.715538 34.157346)\nPOINT (-86.448778 32.03044)\nPOINT (-85.627308 34.764328)\nPOINT (-85.652338 34.750083)\nPOINT (-87.961805 33.36692)\nPOINT (-85.533082 34.294976)\nPOINT (-87.666907 31.020253)\nPOINT (-87.996276 34.11457)\nPOINT (-87.278659 31.304097)\nPOINT (-85.361343 33.147729)\nPOINT (-87.430378 33.117015)\nPOINT (-86.085225 31.412311)\nPOINT (-85.777608 34.876162)\nPOINT (-86.577605 32.177981)\nPOINT (-86.675037 32.131858)\nPOINT (-87.237329 34.169095)\nPOINT (-85.249783 31.567258)\nPOINT (-87.71071 33.713029)\nPOINT (-88.023887 33.569306)\nPOINT (-87.203432 34.683797)\nPOINT (-87.191427 34.92707)\nPOINT (-86.688301 34.323123)\nPOINT (-87.116624 34.471642)\nPOINT (-86.296687 32.159787)\nPOINT (-86.944905 32.253974)\nPOINT (-88.006658 32.976363)\nPOINT (-85.963664 32.872109)\nPOINT (-88.217247 32.656121)\nPOINT (-86.712374 31.04646)\nPOINT (-86.185367 32.495435)\nPOINT (-86.551141 31.831533)\nPOINT (-88.239041 31.305381)\nPOINT (-85.977257 31.775216)\nPOINT (-85.805262 34.877265)\nPOINT (-86.984928 34.605586)\nPOINT (-87.182068 31.03064)\nPOINT (-85.336109 31.35158)\nPOINT (-87.997639 33.306554)\nPOINT (-87.908921 31.67044)\nPOINT (-86.776779 33.536222)\nPOINT (-87.18995 31.736327)\nPOINT (-86.726404 32.151463)\nPOINT (-85.425687 31.933472)\nPOINT (-86.465403 33.9506)\nPOINT (-87.682881 30.412977)\nPOINT (-88.083414 30.244859)\nPOINT (-87.070564 31.992672)\nPOINT (-86.959284 31.41676)\nPOINT (-87.306059 32.32135)\nPOINT (-88.051643 32.876198)\nPOINT (-85.148553 32.192729)\nPOINT (-88.016063 33.466383)\nPOINT (-86.916217 31.517558)\nPOINT (-86.442845 34.601243)\nPOINT (-86.801896 33.905075)\nPOINT (-87.367379 34.073219)\nPOINT (-85.033719 32.509451)\nPOINT (-85.610817 32.026868)\nPOINT (-86.624797 33.179727)\nPOINT (-87.345752 34.915186)\nPOINT (-86.875777 34.102354)\nPOINT (-86.880908 34.049256)\nPOINT (-86.81656 34.172451)\nPOINT (-86.48557 32.089851)\nPOINT (-87.33606 34.360797)\nPOINT (-85.647631 34.829221)\nPOINT (-86.578361 34.850553)\nPOINT (-88.299543 32.842042)\nPOINT (-86.259114 31.577035)\nPOINT (-86.888117 33.54088)\nPOINT (-85.678991 31.637388)\nPOINT (-85.751747 31.34646)\nPOINT (-85.872517 31.94539)\nPOINT (-85.695276 32.437745)\nPOINT (-87.013685 34.678126)\nPOINT (-85.804199 32.258495)\nPOINT (-87.621828 32.717306)\nPOINT (-86.782718 32.458228)\nPOINT (-88.046041 32.815373)\nPOINT (-87.095533 34.414939)\nPOINT (-85.248655 32.355918)\nPOINT (-87.188932 33.511262)\nPOINT (-85.432366 31.782543)\nPOINT (-87.669786 33.441284)\nPOINT (-86.730425 31.629108)\nPOINT (-86.77016 33.501206)\nPOINT (-85.583742 32.972887)\nPOINT (-86.620831 34.743173)\nPOINT (-85.64521 31.487689)\nPOINT (-86.21095 34.26737)\nPOINT (-88.343429 32.92559)\nPOINT (-85.649943 32.007458)\nPOINT (-87.756588 32.206277)\nPOINT (-86.608513 32.983714)\nPOINT (-85.892986 32.535704)\nPOINT (-86.592761 32.957371)\nPOINT (-86.790265 33.47907)\nPOINT (-87.823276 34.452555)\nPOINT (-85.943286 34.979206)\nPOINT (-86.499984 31.601078)\nPOINT (-86.544468 31.898205)\nPOINT (-86.278036 32.387864)\nPOINT (-85.477625 32.216059)\nPOINT (-85.861945 34.82898)\nPOINT (-87.28468 34.509193)\nPOINT (-88.061832 32.916877)\nPOINT (-86.633615 32.02261)\nPOINT (-87.917839 34.367813)\nPOINT (-87.40833 34.644286)\nPOINT (-87.259129 34.284952)\nPOINT (-88.193709 31.438093)\nPOINT (-85.115473 31.532494)\nPOINT (-88.09568 33.860857)\nPOINT (-86.391119 31.553239)\nPOINT (-87.019974 32.424417)\nPOINT (-88.199433 33.127659)\nPOINT (-85.50774 32.584043)\nPOINT (-86.16586 34.162295)\nPOINT (-85.875579 34.55046)\nPOINT (-85.895275 34.776976)\nPOINT (-87.27657 34.041832)\nPOINT (-85.785491 34.623936)\nPOINT (-88.076364 33.295085)\nPOINT (-87.642073 34.095263)\nPOINT (-88.206633 33.72003)\nPOINT (-85.653906 31.511704)\nPOINT (-88.112518 34.728463)\nPOINT (-87.487106 34.47734)\nPOINT (-86.427684 34.664184)\nPOINT (-85.968109 34.711481)\nPOINT (-85.775765 34.936669)\nPOINT (-87.906318 34.211538)\nPOINT (-85.866297 31.038765)\nPOINT (-87.497839 34.867151)\nPOINT (-85.756262 34.945873)\nPOINT (-86.895253 32.997732)\nPOINT (-86.932213 34.451346)\nPOINT (-86.331167 34.671664)\nPOINT (-87.805654 30.472903)\nPOINT (-86.401172 31.948492)\nPOINT (-86.091041 33.432561)\nPOINT (-85.090884 31.562775)\nPOINT (-85.369419 33.140171)\nPOINT (-85.86031 34.959136)\nPOINT (-85.96618 33.490187)\nPOINT (-86.34079 30.994331)\nPOINT (-86.952022 31.659498)\nPOINT (-88.034266 34.347443)\nPOINT (-87.667585 30.392203)\nPOINT (-87.913147 33.285961)\nPOINT (-86.708441 31.508779)\nPOINT (-86.724201 32.927055)\nPOINT (-88.051433 32.75774)\nPOINT (-86.758937 34.32903)\nPOINT (-87.845263 33.133826)\nPOINT (-87.110288 32.226443)\nPOINT (-86.6897 31.219826)\nPOINT (-86.192288 31.075947)\nPOINT (-85.620155 31.776683)\nPOINT (-87.892311 32.009901)\nPOINT (-86.188752 32.361325)\nPOINT (-85.890783 32.259669)\nPOINT (-86.952835 33.439197)\nPOINT (-86.707893 33.373596)\nPOINT (-88.283598 32.174773)\nPOINT (-87.551498 34.842292)\nPOINT (-88.290852 30.918718)\nPOINT (-88.433239 31.424064)\nPOINT (-86.99104 31.11539)\nPOINT (-85.385302 31.202856)\nPOINT (-85.331478 31.719644)\nPOINT (-86.696758 32.337125)\nPOINT (-87.082541 31.920676)\nPOINT (-87.459194 34.469472)\nPOINT (-87.548336 33.315541)\nPOINT (-86.32417 34.013789)\nPOINT (-86.90931 33.482642)\nPOINT (-85.724018 34.439862)\nPOINT (-88.082014 31.187496)\nPOINT (-85.695639 34.653984)\nPOINT (-85.82291 34.967365)\nPOINT (-86.234226 33.584863)\nPOINT (-85.947435 32.922415)\nPOINT (-87.786468 33.687922)\nPOINT (-87.166113 33.970356)\nPOINT (-88.21562 33.638781)\nPOINT (-87.860728 31.014264)\nPOINT (-86.577356 34.721189)\nPOINT (-87.418734 34.87048)\nPOINT (-87.981607 34.761804)\nPOINT (-86.907779 33.4665)\nPOINT (-85.850062 32.039673)\nPOINT (-88.33384 32.818562)\nPOINT (-85.83404 32.826079)\nPOINT (-86.528525 32.319122)\nPOINT (-87.506151 31.308529)\nPOINT (-86.751054 33.376606)\nPOINT (-88.39203 32.507796)\nPOINT (-87.238671 34.749723)\nPOINT (-87.62147 34.225833)\nPOINT (-88.089185 32.674746)\nPOINT (-85.311773 33.152894)\nPOINT (-85.643606 34.634533)\nPOINT (-87.193177 31.544829)\nPOINT (-86.720296 32.797156)\nPOINT (-87.430689 34.820238)\nPOINT (-86.352684 33.266303)\nPOINT (-86.567204 32.88196)\nPOINT (-87.86424 32.841997)\nPOINT (-87.662692 33.474603)\nPOINT (-87.734928 33.546086)\nPOINT (-87.686982 34.803559)\nPOINT (-87.368582 31.03007)\nPOINT (-86.954592 31.435689)\nPOINT (-87.683927 30.62592)\nPOINT (-87.185367 33.750947)\nPOINT (-88.092666 32.859598)\nPOINT (-86.329458 34.069801)\nPOINT (-86.450904 31.197666)\nPOINT (-86.862045 32.933379)\nPOINT (-87.606025 33.17792)\nPOINT (-87.682814 30.561043)\nPOINT (-88.257387 31.464939)\nPOINT (-85.675929 34.149189)\nPOINT (-87.883052 34.735771)\nPOINT (-88.238912 30.681108)\nPOINT (-87.408418 32.502057)\nPOINT (-86.33276 34.670648)\nPOINT (-86.935839 34.261647)\nPOINT (-87.47178 34.629541)\nPOINT (-87.541709 34.027098)\nPOINT (-87.810187 30.805809)\nPOINT (-88.393581 30.719663)\nPOINT (-87.191388 34.844669)\nPOINT (-86.560033 32.89841)\nPOINT (-86.745402 33.489928)\nPOINT (-88.035294 30.667355)\nPOINT (-85.696658 34.889271)\nPOINT (-88.078256 34.143629)\nPOINT (-87.608881 33.452863)\nPOINT (-85.368421 33.150657)\nPOINT (-88.004043 33.401148)\nPOINT (-88.031019 34.482755)\nPOINT (-87.582709 31.58088)\nPOINT (-85.863783 33.222747)\nPOINT (-86.569115 33.137921)\nPOINT (-87.627813 33.513745)\nPOINT (-86.824393 33.466513)\nPOINT (-87.525919 34.57419)\nPOINT (-88.009548 31.087675)\nPOINT (-86.200816 34.180035)\nPOINT (-86.9504 34.103457)\nPOINT (-87.6294 33.905259)\nPOINT (-87.807955 32.483947)\nPOINT (-86.792479 32.677062)\nPOINT (-87.634507 33.000698)\nPOINT (-85.621002 31.812962)\nPOINT (-88.341128 31.219645)\nPOINT (-87.799625 30.38068)\nPOINT (-86.932306 32.815554)\nPOINT (-85.418598 31.535549)\nPOINT (-85.965249 31.227181)\nPOINT (-85.481303 32.293501)\nPOINT (-86.193061 31.161104)\nPOINT (-88.145555 34.207423)\nPOINT (-86.789072 34.833016)\nPOINT (-87.758948 31.930778)\nPOINT (-87.051124 32.486061)\nPOINT (-85.808139 34.907425)\nPOINT (-85.676043 31.595825)\nPOINT (-88.084794 33.098864)\nPOINT (-88.103996 31.123967)\nPOINT (-86.216193 33.20003)\nPOINT (-86.63448 32.981122)\nPOINT (-87.8196 31.210995)\nPOINT (-86.94342 33.365682)\nPOINT (-86.728572 32.32341)\nPOINT (-87.297251 32.141227)\nPOINT (-87.745222 30.996559)\nPOINT (-85.994388 33.98933)\nPOINT (-86.830669 34.149724)\nPOINT (-86.77898 33.551926)\nPOINT (-86.7457 34.698158)\nPOINT (-87.901576 34.151585)\nPOINT (-86.681624 32.98147)\nPOINT (-86.304342 33.606379)\nPOINT (-86.234139 31.262822)\nPOINT (-87.821686 33.72374)\nPOINT (-87.638468 32.341924)\nPOINT (-85.539069 31.301392)\nPOINT (-87.279914 31.7874)\nPOINT (-87.527908 33.72387)\nPOINT (-85.993678 33.987033)\nPOINT (-88.252489 32.916134)\nPOINT (-87.191388 34.945502)\nPOINT (-86.150893 31.815061)\nPOINT (-85.249941 32.446286)\nPOINT (-86.861541 33.12963)\nPOINT (-87.517464 33.16857)\nPOINT (-85.838051 33.159457)\nPOINT (-86.419762 32.291142)\nPOINT (-86.08815 34.022278)\nPOINT (-87.771957 30.614546)\nPOINT (-86.048282 34.373231)\nPOINT (-86.632433 33.671847)\nPOINT (-87.079752 31.056924)\nPOINT (-87.388952 34.621195)\nPOINT (-87.800737 33.747223)\nPOINT (-85.697958 31.86864)\nPOINT (-85.599376 31.576691)\nPOINT (-87.608946 31.986559)\nPOINT (-87.636282 34.991464)\nPOINT (-87.741249 31.719453)\nPOINT (-86.934992 34.444539)\nPOINT (-85.837262 34.486223)\nPOINT (-86.627024 32.956611)\nPOINT (-86.304076 34.049651)\nPOINT (-87.347015 31.732285)\nPOINT (-87.7603 33.631626)\nPOINT (-85.943409 32.619646)\nPOINT (-85.699788 34.501948)\nPOINT (-87.878693 31.731882)\nPOINT (-86.816079 33.124083)\nPOINT (-86.856649 33.128143)\nPOINT (-87.419506 34.592943)\nPOINT (-86.847787 33.523772)\nPOINT (-86.261298 34.358022)\nPOINT (-85.944914 34.600183)\nPOINT (-85.520327 32.426701)\nPOINT (-87.289256 31.986936)\nPOINT (-87.547826 31.163691)\nPOINT (-87.094083 32.938017)\nPOINT (-86.996333 32.948292)\nPOINT (-86.437984 33.138573)\nPOINT (-87.745234 34.484401)\nPOINT (-87.145193 34.682716)\nPOINT (-87.482304 33.192318)\nPOINT (-85.213575 32.705243)\nPOINT (-85.655431 34.141887)\nPOINT (-86.49038 34.056175)\nPOINT (-87.124441 34.419973)\nPOINT (-87.181288 31.216203)\nPOINT (-86.024002 33.583785)\nPOINT (-87.64626 33.708432)\nPOINT (-85.449737 31.992118)\nPOINT (-85.472209 31.863598)\nPOINT (-87.715681 33.413097)\nPOINT (-87.009549 34.674517)\nPOINT (-85.352719 32.463603)\nPOINT (-86.96375 34.800526)\nPOINT (-86.59768 32.973882)\nPOINT (-86.499559 32.228764)\nPOINT (-87.917567 33.338968)\nPOINT (-85.946607 34.712429)\nPOINT (-86.59797 34.742166)\nPOINT (-85.399823 31.839168)\nPOINT (-87.73709 32.114396)\nPOINT (-88.111529 34.640422)\nPOINT (-85.627249 31.779813)\nPOINT (-86.248101 32.332281)\nPOINT (-88.075296 32.820901)\nPOINT (-86.298374 32.381285)\nPOINT (-87.036125 31.317859)\nPOINT (-85.999457 34.35249)\nPOINT (-86.503743 31.311205)\nPOINT (-88.105733 33.870143)\nPOINT (-87.832415 33.684657)\nPOINT (-85.920136 34.863151)\nPOINT (-85.618456 32.108327)\nPOINT (-86.031503 32.448149)\nPOINT (-88.145264 33.141073)\nPOINT (-88.137359 34.434415)\nPOINT (-86.417101 34.537389)\nPOINT (-86.322259 32.10308)\nPOINT (-85.678627 34.152457)\nPOINT (-87.667861 33.620807)\nPOINT (-87.286651 34.764193)\nPOINT (-86.338839 32.573693)\nPOINT (-86.492253 31.307966)\nPOINT (-87.428411 34.470353)\nPOINT (-88.074946 30.764509)\nPOINT (-86.21139 32.920731)\nPOINT (-85.545091 34.050575)\nPOINT (-87.798988 34.583758)\nPOINT (-88.133603 34.437643)\nPOINT (-88.42534 31.817802)\nPOINT (-86.967508 34.80268)\nPOINT (-85.962891 31.79538)\nPOINT (-87.701982 33.593304)\nPOINT (-85.078263 32.112499)\nPOINT (-85.976247 31.512647)\nPOINT (-88.401397 32.341222)\nPOINT (-87.901815 33.276668)\nPOINT (-85.40507 32.622729)\nPOINT (-85.580139 34.393922)\nPOINT (-85.931604 32.94943)\nPOINT (-86.642788 32.946114)\nPOINT (-85.524893 34.152014)\nPOINT (-88.11999 33.400497)\nPOINT (-87.528963 32.025903)\nPOINT (-85.693509 34.264547)\nPOINT (-85.979904 34.823145)\nPOINT (-88.054891 32.996114)\nPOINT (-87.9933 34.38015)\nPOINT (-87.44321 34.569106)\nPOINT (-86.282655 32.346736)\nPOINT (-88.090335 34.756901)\nPOINT (-86.343536 31.964485)\nPOINT (-87.404335 31.540814)\nPOINT (-86.840162 34.833112)\nPOINT (-85.847952 34.616188)\nPOINT (-86.788009 34.617995)\nPOINT (-86.717655 34.294428)\nPOINT (-86.559696 31.808031)\nPOINT (-88.414987 32.338364)\nPOINT (-85.962453 32.619085)\nPOINT (-86.892326 31.150379)\nPOINT (-85.761704 32.08779)\nPOINT (-88.150379 32.089391)\nPOINT (-86.162086 34.859719)\nPOINT (-88.04535 33.906609)\nPOINT (-85.752475 34.955938)\nPOINT (-87.245895 33.026988)\nPOINT (-86.515637 34.523387)\nPOINT (-85.465548 31.77916)\nPOINT (-85.637795 31.450452)\nPOINT (-86.981307 31.873659)\nPOINT (-87.568417 32.493361)\nPOINT (-88.01794 33.374294)\nPOINT (-88.237578 33.608082)\nPOINT (-86.750436 33.550309)\nPOINT (-87.323472 33.228547)\nPOINT (-85.853206 31.060451)\nPOINT (-85.591098 31.437951)\nPOINT (-88.015003 34.251982)\nPOINT (-86.180494 34.764915)\nPOINT (-85.375687 33.150037)\nPOINT (-87.797976 32.307066)\nPOINT (-88.35803 32.121423)\nPOINT (-86.253359 31.287438)\nPOINT (-86.809751 33.522224)\nPOINT (-85.848578 34.49338)\nPOINT (-85.592506 33.456325)\nPOINT (-88.015849 33.925081)\nPOINT (-87.641946 34.373392)\nPOINT (-85.820558 31.736544)\nPOINT (-87.631992 33.650967)\nPOINT (-85.102118 31.153121)\nPOINT (-86.865782 34.34837)\nPOINT (-87.510713 31.612856)\nPOINT (-87.504382 34.93479)\nPOINT (-87.902732 30.602125)\nPOINT (-87.571448 33.73317)\nPOINT (-87.639971 33.427728)\nPOINT (-87.155918 31.06689)\nPOINT (-85.606095 34.931308)\nPOINT (-85.675132 34.269873)\nPOINT (-87.110994 34.417081)\nPOINT (-88.149756 34.341584)\nPOINT (-87.295526 34.787902)\nPOINT (-85.622285 31.853022)\nPOINT (-85.320297 31.573628)\nPOINT (-87.70528 32.027847)\nPOINT (-86.52925 32.088292)\nPOINT (-86.449963 31.587829)\nPOINT (-86.225571 32.970796)\nPOINT (-87.538706 31.970311)\nPOINT (-86.926159 33.341197)\nPOINT (-88.435243 31.844656)\nPOINT (-85.491267 34.203894)\nPOINT (-86.818014 33.523828)\nPOINT (-86.801726 31.165166)\nPOINT (-88.277689 32.310778)\nPOINT (-85.22659 32.030994)\nPOINT (-85.843458 34.142417)\nPOINT (-87.42307 34.469948)\nPOINT (-87.860296 30.834375)\nPOINT (-86.353352 33.276977)\nPOINT (-85.672257 33.250165)\nPOINT (-88.027577 32.357778)\nPOINT (-87.382905 34.834233)\nPOINT (-87.207959 32.000332)\nPOINT (-85.754534 32.021065)\nPOINT (-86.967064 34.567908)\nPOINT (-87.519807 33.217557)\nPOINT (-86.288806 34.37544)\nPOINT (-88.084277 33.425272)\nPOINT (-87.062144 34.937228)\nPOINT (-87.58939 31.898999)\nPOINT (-86.556694 34.548827)\nPOINT (-85.886923 34.800433)\nPOINT (-85.796952 34.452452)\nPOINT (-87.572434 34.963567)\nPOINT (-87.018109 34.058734)\nPOINT (-85.572118 32.440964)\nPOINT (-86.282366 32.334158)\nPOINT (-88.275702 32.499449)\nPOINT (-86.097371 32.445843)\nPOINT (-87.88182 33.117767)\nPOINT (-88.158469 32.372466)\nPOINT (-86.447239 34.596983)\nPOINT (-86.691631 32.998942)\nPOINT (-87.734969 34.12138)\nPOINT (-85.482724 31.87103)\nPOINT (-87.668239 32.13785)\nPOINT (-87.900683 33.47403)\nPOINT (-86.57736 32.503372)\nPOINT (-87.362662 32.382771)\nPOINT (-86.281261 34.020646)\nPOINT (-86.846518 33.509341)\nPOINT (-86.871853 33.099344)\nPOINT (-87.337535 31.427193)\nPOINT (-85.622726 31.448553)\nPOINT (-85.666056 32.429772)\nPOINT (-88.178521 33.592193)\nPOINT (-87.343318 31.994784)\nPOINT (-85.22469 31.30362)\nPOINT (-86.384279 33.450248)\nPOINT (-87.92646 34.352185)\nPOINT (-87.238875 31.41025)\nPOINT (-86.758526 34.749498)\nPOINT (-86.687276 34.668651)\nPOINT (-87.672362 34.505195)\nPOINT (-86.606552 32.889718)\nPOINT (-85.558297 31.779088)\nPOINT (-87.573531 33.908083)\nPOINT (-85.84963 34.864768)\nPOINT (-86.807676 34.809585)\nPOINT (-87.102759 33.231389)\nPOINT (-86.359405 32.143365)\nPOINT (-87.668032 33.673123)\nPOINT (-86.454688 32.582576)\nPOINT (-88.00911 34.175462)\nPOINT (-86.841701 32.815612)\nPOINT (-86.927619 33.442408)\nPOINT (-85.972404 34.925075)\nPOINT (-86.508051 32.817134)\nPOINT (-88.071767 30.805039)\nPOINT (-87.29805 34.833907)\nPOINT (-88.386016 31.971007)\nPOINT (-87.475527 34.852916)\nPOINT (-86.252108 33.310845)\nPOINT (-86.784964 33.446644)\nPOINT (-85.476399 32.203319)\nPOINT (-86.559553 32.050452)\nPOINT (-88.335387 31.802093)\nPOINT (-86.831183 31.575458)\nPOINT (-85.986739 34.579118)\n"},{"type":"HTML","data":"
Output is truncated to 1000 rows. Learn more about zeppelin.spark.maxResult
\n"},{"type":"TEXT","data":""}]},"runtimeInfos":{"jobUrl":{"propertyName":"jobUrl","label":"SPARK JOB","tooltip":"View in Spark web UI","group":"spark","values":["http://192.168.0.3:4040/jobs/job?id=34"],"interpreterSettingId":"spark"}},"apps":[],"jobName":"paragraph_1551324831128_-359721018","id":"20190227-203351_1519829707","dateCreated":"2019-02-27T20:33:51-0700","dateStarted":"2019-03-03T22:10:21-0700","dateFinished":"2019-03-03T22:10:21-0700","status":"FINISHED","progressUpdateIntervalMs":500,"$$hashKey":"object:2325","focus":true},{"text":"%sql\nSELECT *, 'I am the map center!'\nFROM images","user":"anonymous","dateUpdated":"2019-03-04T00:23:03-0700","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{"0":{"graph":{"mode":"geospark-zeppelin","height":300,"optionOpen":true,"setting":{"table":{"tableGridState":{"columns":[{"name":"st_encodeimage(image)","visible":true,"width":"*","sort":{"priority":0,"direction":"asc"},"filters":[{}],"pinned":""},{"name":"1.0","visible":true,"width":"*","sort":{},"filters":[{}],"pinned":""}],"scrollFocus":{},"selection":[],"grouping":{"grouping":[],"aggregations":[],"rowExpandedStates":{}},"treeView":{},"pagination":{"paginationCurrentPage":1,"paginationPageSize":250}},"tableColumnTypeState":{"names":{"st_encodeimage(image)":"string","1.0":"string"},"updated":false},"tableOptionSpecHash":"[{\"name\":\"useFilter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable filter for columns\"},{\"name\":\"showPagination\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable pagination for better navigation\"},{\"name\":\"showAggregationFooter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable a footer for displaying aggregated values\"}]","tableOptionValue":{"useFilter":false,"showPagination":false,"showAggregationFooter":false},"updated":false,"initialized":false},"zeppelin-leaflet":{},"multiBarChart":{"rotate":{"degree":"-45"},"xLabelStatus":"default"},"stackedAreaChart":{"rotate":{"degree":"-45"},"xLabelStatus":"default"},"lineChart":{"rotate":{"degree":"-45"},"xLabelStatus":"default"},"geospark-zeppelin":{"geometry":{"name":"boundary","index":1,"aggr":"sum"},"info":{"name":"I am the map center!","index":2,"aggr":"sum"},"mapimage":{"name":"image","index":0,"aggr":"sum"}}},"keys":[],"groups":[],"values":[]},"helium":{}}},"editorSetting":{"language":"sql","editOnDblClick":false,"completionKey":"TAB","completionSupport":true},"editorMode":"ace/mode/sql"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TABLE","data":"image\tboundary\tI am the map center!\n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\tPOLYGON ((-124.742775 24.95862, -124.742775 49.367211, -66.984485 49.367211, -66.984485 24.95862, -124.742775 24.95862))\tI am the map center!\n"},{"type":"TEXT","data":""}]},"runtimeInfos":{"jobUrl":{"propertyName":"jobUrl","label":"SPARK JOB","tooltip":"View in Spark web UI","group":"spark","values":["http://192.168.0.3:4040/jobs/job?id=27","http://192.168.0.3:4040/jobs/job?id=28","http://192.168.0.3:4040/jobs/job?id=29","http://192.168.0.3:4040/jobs/job?id=30","http://192.168.0.3:4040/jobs/job?id=31","http://192.168.0.3:4040/jobs/job?id=32","http://192.168.0.3:4040/jobs/job?id=33"],"interpreterSettingId":"spark"}},"apps":[],"jobName":"paragraph_1551324840282_-386815477","id":"20190227-203400_1171762279","dateCreated":"2019-02-27T20:34:00-0700","dateStarted":"2019-03-03T21:52:33-0700","dateFinished":"2019-03-03T21:52:58-0700","status":"FINISHED","progressUpdateIntervalMs":500,"$$hashKey":"object:2324"},{"text":"%sql\n","user":"anonymous","dateUpdated":"2019-03-03T22:10:04-0700","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false,"completionKey":"TAB","completionSupport":true},"editorMode":"ace/mode/sql"},"settings":{"params":{},"forms":{}},"apps":[],"jobName":"paragraph_1551676204613_-686646791","id":"20190303-221004_314008204","dateCreated":"2019-03-03T22:10:04-0700","status":"READY","progressUpdateIntervalMs":500,"$$hashKey":"object:2326"}],"name":"geospark-zeppelin-demo","id":"2E5KW6EHJ","noteParams":{},"noteForms":{},"angularObjects":{"md:shared_process":[],"spark:shared_process":[]},"config":{"isZeppelinNotebookCronEnable":false,"looknfeel":"default","personalizedMode":"false"},"info":{}} \ No newline at end of file diff --git a/docker/spark-worker.dockerfile b/docker/spark-worker.dockerfile new file mode 100644 index 0000000000..77e35b86e7 --- /dev/null +++ b/docker/spark-worker.dockerfile @@ -0,0 +1,26 @@ +# +# 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. +# + +ARG spark_version=3.3.2 +FROM kartikeyhadiya/spark-base:${spark_version} + +# -- Runtime + +ARG spark_worker_web_ui=8081 + +EXPOSE ${spark_worker_web_ui} +CMD bin/spark-class org.apache.spark.deploy.worker.Worker spark://${SPARK_MASTER_HOST}:${SPARK_MASTER_PORT} >> logs/spark-worker.out \ No newline at end of file