Acceldata
ODP

Livy 3 Limitations

Independent Livy Instances ⚠️

Impact:

  • Each Livy version runs as a separate process
  • No session sharing between Livy instances
  • Client applications must connect to the correct endpoint

Consideration:

  • Plan client routing carefully
  • Use load balancers if needed for each version
  • Document endpoint URLs for teams

Port Management

Impact:

  • Each Livy instance requires a unique port
  • Firewall rules must allow access to all ports
  • Client applications need port-specific configuration

Recommended Port Allocation:

Version

Port

Purpose

3.5.5

8355

Default/Production

3.5.1

8351

Compatibility Testing

3.3.3

8333

Legacy Support


Spark Version Coupling

Impact:

  • Each Livy version should use its corresponding Spark version
  • Mixing versions can cause compatibility issues
  • The configuration must point to the correct Spark installation

Best Practice

# Ensure SPARK_HOME matches Livy version
# For Livy 3.3.3:
SPARK_HOME=/usr/odp/current/spark3_3_3_3-client

# For Livy 3.5.5:

SPARK_HOME=/usr/odp/current/spark3-client


API Compatibility

Impact:

  • Different Livy versions may have API differences
  • Client applications may need version-specific code
  • Behavioral changes between versions

Mitigation:

  • Review Livy release notes for API changes
  • Test client applications against the target Livy version
  • Maintain version-specific client libraries if needed

Python2 Compatibility in Spark 3 with Livy3

Impact:

  • Spark 3’s PySpark code requires Python 3.
  • If Livy initializes a Spark 3 session using Python 2, a SyntaxError: invalid syntax occurs.
  • Spark session initialization fails because Python 2 cannot parse Python 3–only language features (e.g., type annotations like Union[str, float]).

Error with Python 2

Squirrel

ERROR PythonInterpreter: Process has died with 1

ERROR PythonInterpreter: Traceback (most recent call last):

File "/tmp/9175131608716314470", line 726, in <module>

sys.exit(main())

File "/tmp/9175131608716314470", line 570, in main

exec('from pyspark.sql import HiveContext', global_dict)

File "<string>", line 1, in <module>

File "/usr/odp/current/spark3-client/python/lib/pyspark.zip/pyspark/__init__.py", line 75

def since(version: Union[str, float]) -> Callable[[_F], _F]:

^

SyntaxError: invalid syntax

Mitigation / Workaround:

  • Configure Livy to use Python 3 by adding the following to livy3-env

Squirrel

export PYSPARKPYTHON=/usr/bin/python3

export PYSPARK DRIVER_PYTHON=/usr/bin/python3

  • Restart the Livy service after applying these changes.
  • Ensures both Spark driver and executors run Python 3, allowing Spark 3 sessions to start successfully.