This is an automated email from the ASF dual-hosted git repository.
lfrolov pushed a commit to branch DATALAB-2998
in repository https://gitbox.apache.org/repos/asf/incubator-datalab.git
The following commit(s) were added to refs/heads/DATALAB-2998 by this push:
new 420a87a03 [DATALAB-2998]: added new files nad changes for zeppelin
dataengine-service connection
420a87a03 is described below
commit 420a87a03eeb0c1c8890c0e3ca06323a63d3cddf
Author: leonidfrolov <[email protected]>
AuthorDate: Wed Sep 21 14:44:41 2022 +0300
[DATALAB-2998]: added new files nad changes for zeppelin dataengine-service
connection
---
.../files/azure/dataengine-service_Dockerfile | 1 +
.../src/general/lib/azure/actions_lib.py | 139 ++++++++++++++++++
...common_notebook_configure_dataengine-service.py | 12 +-
.../zeppelin_dataengine-service_create_configs.py | 50 +++----
.../zeppelin_install_dataengine-service_kernels.py | 29 ++--
.../azure/dataengine-service_interpreter_livy.json | 159 +++++++++++++++++++++
6 files changed, 340 insertions(+), 50 deletions(-)
diff --git
a/infrastructure-provisioning/src/general/files/azure/dataengine-service_Dockerfile
b/infrastructure-provisioning/src/general/files/azure/dataengine-service_Dockerfile
index 2b443239b..966aaa5c2 100644
---
a/infrastructure-provisioning/src/general/files/azure/dataengine-service_Dockerfile
+++
b/infrastructure-provisioning/src/general/files/azure/dataengine-service_Dockerfile
@@ -33,6 +33,7 @@ COPY general/scripts/os/get_list_available_pkgs.py
/root/scripts/get_list_availa
COPY general/templates/os/inactive.sh /root/templates/
COPY general/templates/os/inactive.service /root/templates/
COPY general/templates/os/inactive.timer /root/templates/
+COPY general/templates/azure/dataengine-service_interpreter_livy.json
/root/templates/dataengine-service_interpreter_livy.json
RUN chmod a+x /root/fabfile.py; \
chmod a+x /root/scripts/*
diff --git a/infrastructure-provisioning/src/general/lib/azure/actions_lib.py
b/infrastructure-provisioning/src/general/lib/azure/actions_lib.py
index 6cb86ded6..63bdc793a 100644
--- a/infrastructure-provisioning/src/general/lib/azure/actions_lib.py
+++ b/infrastructure-provisioning/src/general/lib/azure/actions_lib.py
@@ -1209,6 +1209,145 @@ class AzureActions:
file=sys.stdout)}))
traceback.print_exc(file=sys.stdout)
+ def configure_zeppelin_hdinsight_interpreter(self, cluster_name, os_user,
headnode_ip):
+ try:
+ # (self, emr_version, cluster_name, region, spark_dir, os_user,
yarn_dir, bucket,
+ # user_name,
endpoint_url, multiple_emrs)
+ # port_number_found = False
+ # zeppelin_restarted = False
+ default_port = 8998
+ # get_cluster_python_version(region, bucket, user_name,
cluster_name)
+ # with open('/tmp/python_version') as f:
+ # python_version = f.read()
+ # python_version = python_version[0:5]
+ # livy_port = ''
+ # livy_path = '/opt/{0}/{1}/livy/'.format(emr_version,
cluster_name)
+ # spark_libs =
"/opt/{0}/jars/usr/share/aws/aws-java-sdk/aws-java-sdk-core*.jar " \
+ # "/opt/{0}/jars/usr/lib/hadoop/hadoop-aws*.jar " \
+ #
"/opt/{0}/jars/usr/share/aws/aws-java-sdk/aws-java-sdk-s3-*.jar " \
+ #
"/opt/{0}/jars/usr/lib/hadoop-lzo/lib/hadoop-lzo-*.jar".format(emr_version)
+ # # fix due to: Multiple py4j files found under
..../spark/python/lib
+ # # py4j-0.10.7-src.zip still in folder. Versions may varies.
+ # subprocess.run('rm
/opt/{0}/{1}/spark/python/lib/py4j-src.zip'.format(emr_version, cluster_name),
+ # shell=True, check=True)
+ #
+ # subprocess.run('echo \"Configuring emr path for Zeppelin\"',
shell=True, check=True)
+ # subprocess.run('sed -i \"s/^export SPARK_HOME.*/export
SPARK_HOME=\/opt\/{0}\/{1}\/spark/\" '
+ #
'/opt/zeppelin/conf/zeppelin-env.sh'.format(emr_version, cluster_name),
shell=True,
+ # check=True)
+ # subprocess.run('sed -i "s/^export HADOOP_CONF_DIR.*/export
HADOOP_CONF_DIR=' + \
+ # '\/opt\/{0}\/{1}\/conf/"
/opt/{0}/{1}/spark/conf/spark-env.sh'.format(emr_version,
+ #
cluster_name),
+ # shell=True, check=True)
+ # subprocess.run(
+ # 'echo \"spark.jars $(ls {0} | tr \'\\n\' \',\')\" >>
/opt/{1}/{2}/spark/conf/spark-defaults.conf'
+ # .format(spark_libs, emr_version, cluster_name), shell=True,
check=True)
+ # subprocess.run('sed -i "/spark.executorEnv.PYTHONPATH/d"
/opt/{0}/{1}/spark/conf/spark-defaults.conf'
+ # .format(emr_version, cluster_name), shell=True,
check=True)
+ # subprocess.run('sed -i "/spark.yarn.dist.files/d"
/opt/{0}/{1}/spark/conf/spark-defaults.conf'
+ # .format(emr_version, cluster_name), shell=True,
check=True)
+ # subprocess.run('sudo chown {0}:{0} -R
/opt/zeppelin/'.format(os_user), shell=True, check=True)
+ # subprocess.run('sudo systemctl daemon-reload', shell=True,
check=True)
+ # subprocess.run('sudo service zeppelin-notebook stop',
shell=True, check=True)
+ # subprocess.run('sudo service zeppelin-notebook start',
shell=True, check=True)
+ # while not zeppelin_restarted:
+ # subprocess.run('sleep 5', shell=True, check=True)
+ # result = subprocess.run('sudo bash -c "nmap -p 8080
localhost | grep closed > /dev/null" ; echo $?',
+ # capture_output=True, shell=True,
check=True).stdout.decode('UTF-8').rstrip(
+ # "\n\r")
+ # result = result[:1]
+ # if result == '1':
+ # zeppelin_restarted = True
+ # subprocess.run('sleep 5', shell=True, check=True)
+ subprocess.run('echo \"Configuring emr spark interpreter for
Zeppelin\"', shell=True, check=True)
+ if False: #multiple_emrs == 'true':
+ pass
+ # while not port_number_found:
+ # port_free = subprocess.run('sudo bash -c "nmap -p ' +
str(default_port) +
+ # ' localhost | grep closed >
/dev/null" ; echo $?', capture_output=True,
+ # shell=True,
check=True).stdout.decode('UTF-8').rstrip("\n\r")
+ # port_free = port_free[:1]
+ # if port_free == '0':
+ # livy_port = default_port
+ # port_number_found = True
+ # else:
+ # default_port += 1
+ # subprocess.run(
+ # 'sudo echo "livy.server.port = {0}" >>
{1}conf/livy.conf'.format(str(livy_port), livy_path),
+ # shell=True, check=True)
+ # subprocess.run('sudo echo "livy.spark.master = yarn" >>
{}conf/livy.conf'.format(livy_path), shell=True,
+ # check=True)
+ # if
os.path.exists('{}conf/spark-blacklist.conf'.format(livy_path)):
+ # subprocess.run('sudo sed -i "s/^/#/g"
{}conf/spark-blacklist.conf'.format(livy_path), shell=True,
+ # check=True)
+ # subprocess.run(
+ # ''' sudo echo "export SPARK_HOME={0}" >>
{1}conf/livy-env.sh'''.format(spark_dir, livy_path),
+ # shell=True, check=True)
+ # subprocess.run(
+ # ''' sudo echo "export HADOOP_CONF_DIR={0}" >>
{1}conf/livy-env.sh'''.format(yarn_dir, livy_path),
+ # shell=True, check=True)
+ # subprocess.run(''' sudo echo "export
PYSPARK3_PYTHON=python{0}" >> {1}conf/livy-env.sh'''.format(
+ # python_version[0:3],
+ # livy_path), shell=True, check=True)
+ # template_file = "/tmp/dataengine-service_interpreter.json"
+ # fr = open(template_file, 'r+')
+ # text = fr.read()
+ # text = text.replace('CLUSTER_NAME', cluster_name)
+ # text = text.replace('SPARK_HOME', spark_dir)
+ # text = text.replace('ENDPOINTURL', endpoint_url)
+ # text = text.replace('LIVY_PORT', str(livy_port))
+ # fw = open(template_file, 'w')
+ # fw.write(text)
+ # fw.close()
+ # for _ in range(5):
+ # try:
+ # subprocess.run("curl --noproxy localhost -H
'Content-Type: application/json' -X POST -d " +
+ #
"@/tmp/dataengine-service_interpreter.json
http://localhost:8080/api/interpreter/setting",
+ # shell=True, check=True)
+ # break
+ # except:
+ # subprocess.run('sleep 5', shell=True, check=True)
+ # subprocess.run('sudo cp /opt/livy-server-cluster.service
/etc/systemd/system/livy-server-{}.service'
+ # .format(str(livy_port)), shell=True,
check=True)
+ # subprocess.run("sudo sed -i 's|OS_USER|{0}|'
/etc/systemd/system/livy-server-{1}.service"
+ # .format(os_user, str(livy_port)), shell=True,
check=True)
+ # subprocess.run("sudo sed -i 's|LIVY_PATH|{0}|'
/etc/systemd/system/livy-server-{1}.service"
+ # .format(livy_path, str(livy_port)),
shell=True, check=True)
+ # subprocess.run('sudo chmod 644
/etc/systemd/system/livy-server-{}.service'.format(str(livy_port)),
+ # shell=True, check=True)
+ # subprocess.run("sudo systemctl daemon-reload", shell=True,
check=True)
+ # subprocess.run("sudo systemctl enable
livy-server-{}".format(str(livy_port)), shell=True, check=True)
+ # subprocess.run('sudo systemctl start
livy-server-{}'.format(str(livy_port)), shell=True, check=True)
+ else:
+ template_file = "/tmp/dataengine-service_interpreter.json"
+ fr = open(template_file, 'r+')
+ text = fr.read()
+ text = text.replace('CLUSTERNAME', cluster_name)
+ text = text.replace('HEADNODEIP', headnode_ip)
+ text = text.replace('PORT', default_port)
+ # text = text.replace('PYTHONVERSION', p_version)
+ # text = text.replace('SPARK_HOME', spark_dir)
+ # text = text.replace('PYTHONVER_SHORT', p_version[:1])
+ # text = text.replace('ENDPOINTURL', endpoint_url)
+ # text = text.replace('DATAENGINE-SERVICE_VERSION',
emr_version)
+ tmp_file = "/tmp/hdinsight_interpreter_livy.json"
+ fw = open(tmp_file, 'w')
+ fw.write(text)
+ fw.close()
+ for _ in range(5):
+ try:
+ subprocess.run("curl --noproxy localhost -H
'Content-Type: application/json' -X POST "
+ "-d
@/tmp/hdinsight_interpreter_livy.json "
+
"http://localhost:8080/api/interpreter/setting",
+ shell=True, check=True)
+ break
+ except:
+ subprocess.run('sleep 5', shell=True, check=True)
+ subprocess.run(
+ 'touch /home/' + os_user + '/.ensure_dir/dataengine-service_'
+ cluster_name + '_interpreter_ensured',
+ shell=True, check=True)
+ except:
+ sys.exit(1)
def ensure_local_jars(os_user, jars_dir):
if not
exists(datalab.fab.conn,'/home/{}/.ensure_dir/local_jars_ensured'.format(os_user)):
diff --git
a/infrastructure-provisioning/src/general/scripts/azure/common_notebook_configure_dataengine-service.py
b/infrastructure-provisioning/src/general/scripts/azure/common_notebook_configure_dataengine-service.py
index 92484657f..f198ba49f 100644
---
a/infrastructure-provisioning/src/general/scripts/azure/common_notebook_configure_dataengine-service.py
+++
b/infrastructure-provisioning/src/general/scripts/azure/common_notebook_configure_dataengine-service.py
@@ -72,6 +72,9 @@ if __name__ == "__main__":
notebook_config['project_name'], notebook_config['endpoint_tag'])
edge_instance_hostname =
AzureMeta.get_private_ip_address(notebook_config['resource_group_name'],
edge_instance_name)
+ notebook_config['headnode_ip'] =
datalab.fab.get_hdinsight_headnode_private_ip(os.environ['conf_os_user'],
+
notebook_config['cluster_name'],
+
notebook_config['key_path'])
if os.environ['application'] == 'deeplearning':
application = 'jupyter'
@@ -80,13 +83,14 @@ if __name__ == "__main__":
try:
logging.info('[INSTALLING KERNELS INTO SPECIFIED NOTEBOOK]')
- params = "--bucket {} --cluster_name {} --dataproc_version {}
--keyfile {} --notebook_ip {} --region {} " \
+ params = "--bucket {} --cluster_name {} --hdinsight_version {}
--keyfile {} --notebook_ip {} --region {} " \
"--edge_user_name {} --project_name {} --os_user {}
--edge_hostname {} --proxy_port {} " \
- "--scala_version {} --application {}" \
- .format(notebook_config['storage_account_name_tag'],
notebook_config['cluster_name'], os.environ['dataproc_version'],
+ "--scala_version {} --application {} --headnode_ip" \
+ .format(notebook_config['storage_account_name_tag'],
notebook_config['cluster_name'], os.environ['hdinsight_version'],
notebook_config['key_path'],
notebook_config['notebook_ip'], os.environ['gcp_region'],
notebook_config['edge_user_name'],
notebook_config['project_name'], os.environ['conf_os_user'],
- edge_instance_hostname, '3128',
os.environ['notebook_scala_version'], os.environ['application'])
+ edge_instance_hostname, '3128',
os.environ['notebook_scala_version'], os.environ['application'],
+ notebook_config['headnode_ip'])
try:
subprocess.run("~/scripts/{}_{}.py {}".format(application,
'install_dataengine-service_kernels', params),
shell=True, check=True)
diff --git
a/infrastructure-provisioning/src/general/scripts/azure/zeppelin_dataengine-service_create_configs.py
b/infrastructure-provisioning/src/general/scripts/azure/zeppelin_dataengine-service_create_configs.py
index f645b64b4..ad8cc6731 100644
---
a/infrastructure-provisioning/src/general/scripts/azure/zeppelin_dataengine-service_create_configs.py
+++
b/infrastructure-provisioning/src/general/scripts/azure/zeppelin_dataengine-service_create_configs.py
@@ -23,7 +23,7 @@
import argparse
import subprocess
-from datalab.actions_lib import jars, yarn, install_emr_spark, spark_defaults,
installing_python, configure_zeppelin_emr_interpreter
+from datalab.actions_lib import jars, yarn, install_hdinsight_spark,
spark_defaults, installing_python, configure_zeppelin_hdinsight_interpreter
from datalab.common_lib import *
from datalab.fab import configuring_notebook, update_zeppelin_interpreters
from datalab.notebook_lib import *
@@ -33,7 +33,7 @@ parser = argparse.ArgumentParser()
parser.add_argument('--bucket', type=str, default='')
parser.add_argument('--cluster_name', type=str, default='')
parser.add_argument('--dry_run', type=str, default='false')
-parser.add_argument('--emr_version', type=str, default='')
+parser.add_argument('--hdinsight_version', type=str, default='')
parser.add_argument('--spark_version', type=str, default='')
parser.add_argument('--scala_version', type=str, default='')
parser.add_argument('--hadoop_version', type=str, default='')
@@ -49,25 +49,26 @@ parser.add_argument('--multiple_clusters', type=str,
default='')
parser.add_argument('--numpy_version', type=str, default='')
parser.add_argument('--application', type=str, default='')
parser.add_argument('--r_enabled', type=str, default='')
+parser.add_argument('--headnode_ip', type=str, default='')
args = parser.parse_args()
-emr_dir = '/opt/' + args.emr_version + '/jars/'
+hdinsight_dir = '/opt/' + args.hdinsight_version + '/jars/'
kernels_dir = '/home/' + args.os_user + '/.local/share/jupyter/kernels/'
-spark_dir = '/opt/' + args.emr_version + '/' + args.cluster_name + '/spark/'
-yarn_dir = '/opt/' + args.emr_version + '/' + args.cluster_name + '/conf/'
+spark_dir = '/opt/' + args.hdinsight_version + '/' + args.cluster_name +
'/spark/'
+yarn_dir = '/opt/' + args.hdinsight_version + '/' + args.cluster_name +
'/conf/'
def install_remote_livy(args):
subprocess.run('sudo chown ' + args.os_user + ':' + args.os_user + ' -R
/opt/zeppelin/', shell=True, check=True)
subprocess.run('sudo service zeppelin-notebook stop', shell=True,
check=True)
subprocess.run('sudo -i wget
http://archive.cloudera.com/beta/livy/livy-server-' + args.livy_version + '.zip
-O /opt/'
- + args.emr_version + '/' + args.cluster_name + '/livy-server-' +
args.livy_version + '.zip', shell=True, check=True)
+ + args.hdinsight_version + '/' + args.cluster_name + '/livy-server-'
+ args.livy_version + '.zip', shell=True, check=True)
subprocess.run('sudo unzip /opt/'
- + args.emr_version + '/' + args.cluster_name + '/livy-server-' +
args.livy_version + '.zip -d /opt/'
- + args.emr_version + '/' + args.cluster_name + '/', shell=True,
check=True)
- subprocess.run('sudo mv /opt/' + args.emr_version + '/' +
args.cluster_name + '/livy-server-' + args.livy_version +
- '/ /opt/' + args.emr_version + '/' + args.cluster_name + '/livy/',
shell=True, check=True)
- livy_path = '/opt/' + args.emr_version + '/' + args.cluster_name + '/livy/'
+ + args.hdinsight_version + '/' + args.cluster_name + '/livy-server-'
+ args.livy_version + '.zip -d /opt/'
+ + args.hdinsight_version + '/' + args.cluster_name + '/',
shell=True, check=True)
+ subprocess.run('sudo mv /opt/' + args.hdinsight_version + '/' +
args.cluster_name + '/livy-server-' + args.livy_version +
+ '/ /opt/' + args.hdinsight_version + '/' + args.cluster_name +
'/livy/', shell=True, check=True)
+ livy_path = '/opt/' + args.hdinsight_version + '/' + args.cluster_name +
'/livy/'
subprocess.run('sudo mkdir -p ' + livy_path + '/logs', shell=True,
check=True)
subprocess.run('sudo mkdir -p /var/run/livy', shell=True, check=True)
subprocess.run('sudo chown ' + args.os_user + ':' + args.os_user + ' -R
/var/run/livy', shell=True, check=True)
@@ -78,17 +79,16 @@ if __name__ == "__main__":
if args.dry_run == 'true':
parser.print_help()
else:
- result = prepare(emr_dir, yarn_dir)
- if result == False :
- jars(args, emr_dir)
- yarn(args, yarn_dir)
- install_emr_spark(args)
- spark_defaults(args)
- configuring_notebook(args.emr_version)
- if args.multiple_clusters == 'true':
- install_remote_livy(args)
- installing_python(args.region, args.bucket, args.project_name,
args.cluster_name, args.application,
- args.numpy_version, args.matplotlib_version)
- configure_zeppelin_emr_interpreter(args.emr_version,
args.cluster_name, args.region, spark_dir, args.os_user,
- yarn_dir, args.bucket,
args.project_name, endpoint_url, args.multiple_clusters)
- update_zeppelin_interpreters(args.multiple_clusters, args.r_enabled)
+ # result = prepare(hdinsight_dir, yarn_dir)
+ # if result == False :
+ # jars(args, hdinsight_dir)
+ # yarn(args, yarn_dir)
+ # install_hdinsight_spark(args)
+ # spark_defaults(args)
+ # configuring_notebook(args.hdinsight_version)
+ # if args.multiple_clusters == 'true':
+ # install_remote_livy(args)
+ # installing_python(args.region, args.bucket, args.project_name,
args.cluster_name, args.application,
+ # args.numpy_version, args.matplotlib_version)
+ configure_zeppelin_hdinsight_interpreter(args.cluster_name,
args.os_user, args.headnode_ip)
+ # update_zeppelin_interpreters(args.multiple_clusters, args.r_enabled)
diff --git
a/infrastructure-provisioning/src/general/scripts/azure/zeppelin_install_dataengine-service_kernels.py
b/infrastructure-provisioning/src/general/scripts/azure/zeppelin_install_dataengine-service_kernels.py
index b8ea051d1..2ffbf2a7c 100644
---
a/infrastructure-provisioning/src/general/scripts/azure/zeppelin_install_dataengine-service_kernels.py
+++
b/infrastructure-provisioning/src/general/scripts/azure/zeppelin_install_dataengine-service_kernels.py
@@ -30,17 +30,18 @@ parser = argparse.ArgumentParser()
parser.add_argument('--bucket', type=str, default='')
parser.add_argument('--cluster_name', type=str, default='')
parser.add_argument('--dry_run', type=str, default='false')
-parser.add_argument('--emr_version', type=str, default='')
+parser.add_argument('--hdinsight_version', type=str, default='')
parser.add_argument('--keyfile', type=str, default='')
parser.add_argument('--region', type=str, default='')
parser.add_argument('--notebook_ip', type=str, default='')
parser.add_argument('--scala_version', type=str, default='')
-parser.add_argument('--emr_excluded_spark_properties', type=str, default='')
+parser.add_argument('--hdinsight_excluded_spark_properties', type=str,
default='')
parser.add_argument('--project_name', type=str, default='')
parser.add_argument('--os_user', type=str, default='')
parser.add_argument('--edge_hostname', type=str, default='')
parser.add_argument('--proxy_port', type=str, default='')
parser.add_argument('--application', type=str, default='')
+parser.add_argument('--headnode_ip', type=str, default='')
args = parser.parse_args()
@@ -77,31 +78,16 @@ if __name__ == "__main__":
numpy_version = os.environ['notebook_numpy_version']
matplotlib_version = os.environ['notebook_matplotlib_version']
command = "/usr/bin/python3
/usr/local/bin/zeppelin_dataengine-service_create_configs.py " \
- "--bucket {0} " \
"--cluster_name {1} " \
- "--emr_version {2} " \
- "--spark_version {3} " \
- "--hadoop_version {4} " \
- "--region {5} " \
- "--excluded_lines '{6}' " \
- "--project_name {7} " \
"--os_user {8} " \
- "--edge_hostname {9} " \
- "--proxy_port {10} " \
- "--scala_version {11} " \
- "--livy_version {12} " \
- "--multiple_clusters {13} " \
- "--numpy_version {14} " \
- "--matplotlib_version {15} " \
- "--application {16} " \
- "--r_enabled {17}" \
+ "--headnode_ip {18}" \
.format(args.bucket,
args.cluster_name,
- args.emr_version,
+ args.hdinsight_version,
spark_version,
hadoop_version,
args.region,
- args.emr_excluded_spark_properties,
+ args.hdinsight_excluded_spark_properties,
args.project_name,
args.os_user,
args.edge_hostname,
@@ -112,5 +98,6 @@ if __name__ == "__main__":
numpy_version,
matplotlib_version,
args.application,
- r_enabled)
+ r_enabled,
+ args.headnode_ip)
conn.sudo(command)
diff --git
a/infrastructure-provisioning/src/general/templates/azure/dataengine-service_interpreter_livy.json
b/infrastructure-provisioning/src/general/templates/azure/dataengine-service_interpreter_livy.json
new file mode 100644
index 000000000..5bd79823e
--- /dev/null
+++
b/infrastructure-provisioning/src/general/templates/azure/dataengine-service_interpreter_livy.json
@@ -0,0 +1,159 @@
+{
+ "id":"livy",
+ "name":"CLUSTERNAME",
+ "group":"livy",
+ "properties":{
+ "zeppelin.livy.url":{
+ "name":"zeppelin.livy.url",
+ "value":"https://HEADNODEIP:PORT",
+ "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.memory":{
+ "name":"livy.spark.driver.memory",
+ "value":"1g",
+ "type":"string",
+ "description":"Driver memory. ex) 512m, 32g"
+ },
+ "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.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.R.knitr":{
+ "name":"zeppelin.R.knitr",
+ "value":"true",
+ "type":"string"
+ },
+ "zeppelin.R.image.width":{
+ "name":"zeppelin.R.image.width",
+ "value":"100%",
+ "type":"string"
+ },
+ "zeppelin.R.cmd":{
+ "name":"zeppelin.R.cmd",
+ "value":"R",
+ "type":"string"
+ },
+ "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",
+ "type":"string"
+ }
+ },
+ "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
+ }
+}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]