blob: af30250d4812be5a090fc116551f39a75f9eaa74 [file] [log] [blame]
#! /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.
set -x
SCRIPT_LOCATION=$(dirname $0)
PAUS=$HOME/PAUS
while [[ $# -gt 0 ]]; do
case $1 in
--base-dir)
BASEDIR="$2"
shift # past argument
shift # past value
;;
--name)
NAME="$2"
shift # past argument
shift # past value
;;
--appid)
APPID="$2"
shift # past argument
shift # past value
;;
--pr)
PR="$2"
shift # past argument
shift # past value
;;
--disk)
DISK="$2"
shift # past argument
shift # past value
;;
--nic)
NIC="$2"
shift # past argument
shift # past value
;;
--tz)
SPARK_TZ="$2"
shift # past argument
shift # past value
;;
--proxy)
PROXY="$2"
shift # past argument
shift # past value
;;
--emails)
EMAILS="$2"
shift # past argument
shift # past value
;;
--comp-appid)
COMP_APPID="$2"
shift # past argument
shift # past value
;;
--comp-base-dir)
COMP_BASEDIR="$2"
shift # past argument
shift # past value
;;
--comp-name)
COMP_NAME="$2"
shift # past argument
shift # past value
;;
--baseline-appid)
BASELINE_APPID="$2"
shift # past argument
shift # past value
;;
--baseline-base-dir)
BASELINE_BASEDIR="$2"
shift # past argument
shift # past value
;;
*)
echo "Error: Unknown argument: $1"
exit 1
;;
esac
done
# Validation: Check if any of the required variables are empty
if [[ -z "${BASEDIR+x}" || -z "${NAME+x}" || -z "${APPID+x}" || -z "${DISK+x}" || -z "${NIC+x}" || -z "${SPARK_TZ+x}" ]]; then
echo "Error: One or more required arguments are missing or empty."
exit 1
fi
mkdir -p $PAUS
if [ ! -f "$PAUS/perf_analysis_template.ipynb" ]; then
cp $SCRIPT_LOCATION/perf_analysis_template.ipynb $PAUS/
fi
if [ ! -f "$PAUS/sparklog.ipynb" ]; then
cp $SCRIPT_LOCATION/sparklog.ipynb $PAUS/
fi
workdir=$PAUS/$BASEDIR
mkdir -p $workdir
mkdir -p $workdir/html
nb_name0=${NAME}_${APPID}
nb_name=${nb_name0}.ipynb
# Upload eventlog
cp -f $PAUS/perf_analysis_template.ipynb $workdir/$nb_name
hdfs dfs -mkdir -p /history
hdfs dfs -ls /history/$APPID >/dev/null 2>&1 || { hdfs dfs -cp /$BASEDIR/$APPID/app.log /history/$APPID || exit 1; }
EXTRA_ARGS=""
if [ -v COMP_APPID ]
then
if [[ -z "${COMP_BASEDIR+x}" || -z "${COMP_NAME+x}" ]]; then
echo "Missing --comp-base-dir or --comp-name"
exit 1
fi
hdfs dfs -ls /history/$COMP_APPID >/dev/null 2>&1 || { hdfs dfs -cp /$COMP_BASEDIR/$COMP_APPID/app.log /history/$COMP_APPID || exit 1; }
EXTRA_ARGS=$EXTRA_ARGS" -r comp_appid $COMP_APPID -r comp_base_dir $COMP_BASEDIR -r comp_name $COMP_NAME"
sed -i "s/# Compare to\"/# Compare to $COMP_NAME\"/g" $workdir/$nb_name
fi
if [ -v BASELINE_APPID ]
then
if [[ -z "${BASELINE_BASEDIR+x}" ]]; then
echo "Missing --baseline-base-dir"
exit 1
fi
hdfs dfs -ls /history/$BASELINE_APPID >/dev/null 2>&1 || { hdfs dfs -cp /$BASELINE_BASEDIR/$BASELINE_APPID/app.log /history/$BASELINE_APPID || exit 1; }
EXTRA_ARGS=$EXTRA_ARGS" -r baseline_appid $BASELINE_APPID -r baseline_base_dir $BASELINE_BASEDIR"
fi
if [ -n "${PR}" ]
then
EXTRA_ARGS=$EXTRA_ARGS" -r pr $PR"
fi
if [ -n "${PROXY}" ]
then
EXTRA_ARGS=$EXTRA_ARGS" -r proxy $PROXY"
fi
if [ -n "${EMAILS}" ]
then
EXTRA_ARGS=$EXTRA_ARGS" -r emails $EMAILS"
fi
source ~/paus-env/bin/activate
notebook_html=html/${nb_name0}.html
papermill --cwd $workdir \
-r appid $APPID \
-r disk $DISK \
-r nic $NIC \
-r tz $SPARK_TZ \
-r base_dir $BASEDIR \
-r name $NAME \
-r notebook $nb_name \
-r notebook_html $notebook_html \
$EXTRA_ARGS $workdir/$nb_name $workdir/$nb_name
jupyter nbconvert --to html --no-input $workdir/$nb_name --output $workdir/$notebook_html --template classic > /dev/null 2>&1