spark-instrumented-optimizer/graphx-shell
Joseph E. Gonzalez 3c37928fab This commit adds a new graphx-shell which is essentially the same as
the spark shell but with GraphX packages automatically imported
and with Kryo serialization enabled for GraphX types.

In addition the graphx-shell has a nifty new logo.

To make these changes minimally invasive in the SparkILoop.scala
I added some additional environment variables:

   SPARK_BANNER_TEXT: If set this string is displayed instead
   of the spark logo

   SPARK_SHELL_INIT_BLOCK: if set this expression is evaluated in the
   spark shell after the spark context is created.
2013-11-04 20:10:15 -08:00

125 lines
3.5 KiB
Bash
Executable file

#!/usr/bin/env 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.
#
#
# Shell script for starting the Spark Shell REPL
# Note that it will set MASTER to spark://${SPARK_MASTER_IP}:${SPARK_MASTER_PORT}
# if those two env vars are set in spark-env.sh but MASTER is not.
# Options:
# -c <cores> Set the number of cores for REPL to use
#
# Enter posix mode for bash
set -o posix
# Update the the banner logo
export SPARK_BANNER_TEXT="Welcome to
______ __ _ __
/ ____/________ _____ / /_ | |/ /
/ / __/ ___/ __ \`/ __ \/ __ \| /
/ /_/ / / / /_/ / /_/ / / / / |
\____/_/ \__,_/ .___/_/ /_/_/|_|
/_/ Alpha Release
Powered by:
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ \`/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\
/_/ version 0.9.0
Example:
scala> val graph = GraphLoader.textFile(sc, \"hdfs://links\")
scala> graph.numVertices
scala> graph.numEdges
scala> val pageRankGraph = Analytics.pagerank(graph, 10) // 10 iterations
scala> val maxPr = pageRankGraph.vertices.map{ case (vid, pr) => pr }.max
scala> println(maxPr)
"
export SPARK_SHELL_INIT_BLOCK="import org.apache.spark.graph._;"
# Set the serializer to use Kryo for graphx objects
SPARK_JAVA_OPTS+=" -Dspark.serializer=org.apache.spark.serializer.KryoSerializer "
SPARK_JAVA_OPTS+="-Dspark.kryo.registrator=org.apache.spark.graph.GraphKryoRegistrator "
SPARK_JAVA_OPTS+="-Dspark.kryoserializer.buffer.mb=10 "
FWDIR="`dirname $0`"
for o in "$@"; do
if [ "$1" = "-c" -o "$1" = "--cores" ]; then
shift
if [ -n "$1" ]; then
OPTIONS="-Dspark.cores.max=$1"
shift
fi
fi
done
# Set MASTER from spark-env if possible
if [ -z "$MASTER" ]; then
if [ -e "$FWDIR/conf/spark-env.sh" ]; then
. "$FWDIR/conf/spark-env.sh"
fi
if [[ "x" != "x$SPARK_MASTER_IP" && "y" != "y$SPARK_MASTER_PORT" ]]; then
MASTER="spark://${SPARK_MASTER_IP}:${SPARK_MASTER_PORT}"
export MASTER
fi
fi
# Copy restore-TTY-on-exit functions from Scala script so spark-shell exits properly even in
# binary distribution of Spark where Scala is not installed
exit_status=127
saved_stty=""
# restore stty settings (echo in particular)
function restoreSttySettings() {
stty $saved_stty
saved_stty=""
}
function onExit() {
if [[ "$saved_stty" != "" ]]; then
restoreSttySettings
fi
exit $exit_status
}
# to reenable echo if we are interrupted before completing.
trap onExit INT
# save terminal settings
saved_stty=$(stty -g 2>/dev/null)
# clear on error so we don't later try to restore them
if [[ ! $? ]]; then
saved_stty=""
fi
$FWDIR/spark-class $OPTIONS org.apache.spark.repl.Main "$@"
# record the exit status lest it be overwritten:
# then reenable echo and propagate the code.
exit_status=$?
onExit