Authorization

GeoAnalytics Engine must be authorized with a valid license before running any tool or function. You can authorize the module with a GeoAnalytics Engine username and password, an API key, or a license file provided by Esri. If the module is not authorized, any tool or function will fail with com.esri.geoanalytics.internal.AuthError: Not authorized. For more information on GeoAnalytics Engine licenses, see Licensing.

You can authorize GeoAnalytics Engine in one of two ways:

  • Call a function in a PySpark or Scala notebook, shell, or script.
  • Set a property in the Spark configuration.

Authorize using Python

You can authorize GeoAnalytics Engine in a PySpark or Scala notebook, the Spark shell, or in a script by importing the module and calling the authorization function, geoanalytics.auth(). The function arguments required depend on how you are authorizing the module. The two options are:

  • Provide a username and password for an active GeoAnalytics Engine subscription. This securely authorizes GeoAnalytics Engine over the internet using OAuth 2.0.
    Python
    1
    2
    3
    
    import geoanalytics
    geoanalytics.auth(username="User1", password="p@ssw0rd")
  • Provide the path to a license file for disconnected authorization. The file must be accessible to the Spark driver.
    Python
    1
    2
    3
    
    import geoanalytics
    geoanalytics.auth(license_file="/engine/license.ecp")
  • Provide an API key for an active GeoAnalytics Engine subscription. This securely authorizes GeoAnalytics Engine over the internet using OAuth 2.0.
    Python
    1
    2
    3
    
    import geoanalytics
    geoanalytics.auth(api_key="myapik3y")

Authorize using Spark properties

You can also authorize GeoAnalytics Engine in the Spark configuration by setting one of three properties. These properties can be set using command line arguments, a config file, or directly on the SparkContext in a Spark session. For more information see Spark configuration.

  • spark.geoanalytics.auth.cred.file—The path to a file containing the username and password for an active GeoAnalytics Engine subscription. The file must be accessible to the Spark driver. This securely authorizes GeoAnalytics Engine over the internet using OAuth 2.0. For example:

    1
    2
    username User1
    password p@ssw0rd
  • spark.geoanalytics.auth.license.file—The path to a license file for disconnected authorization. The file must be accessible to the Spark driver.

Verify authorization

You can verify that you are correctly authorized to use GeoAnalytics Engine by running any SQL function or tool, or by calling the authorization info function, geoanalytics.auth_info(). This function returns a DataFrame with two columns, name and value, which represent the name of user property and the value of that property respectively. The properties returned include:

  • 'session_uptime'—The amount of time in milliseconds that GeoAnalytics Engine has been authorized in the current session.
  • 'auth'—The type of authorization currently in use. Options are token/oauth or license/file.
  • 'scope'—The scope of the current authorization.
  • 'offline'—False if the module is connected for usage time reporting, otherwise True.
  • 'metered'—True if usage time is being measured. Usage is measured in compute units per millisecond. Usage is only metered for connected licensing.
  • 'authorized'—True if the module is correctly authorized and ready to use.

The following property is returned for disconnected licensing only:

  • 'expires'—The date the disconnected license file expires.

The following properties are returned for connected licensing only:

  • 'billing_type'—The plan type for connected licensing.
  • 'session_usage'—The compute unit-milliseconds consumed in the current session.

If the module is not authorized, geoanalytics.auth_info() will return an empty DataFrame. The code snippet below shows an example of what the DataFrame returned from geoanalytics.auth_info() might look like before and 10 seconds after authorization for connected and disconnected licensing:

  • Connected authorization:

    Python
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    
    import geoanalytics, time
    
    print("Before authorization:")
    geoanalytics.auth_info().show()
    
    geoanalytics.auth(username="User1", password="p@ssw0rd")
    time.sleep(10)
    
    print("After authorization:")
    geoanalytics.auth_info().show()
    Result
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Before authorization:
    +----+-----+
    |name|value|
    +----+-----+
    +----+-----+
    
    After authorization:
    
    +--------------+-------------+
    |          name|        value|
    +--------------+-------------+
    |session_uptime|        10015|
    |          auth|  token/oauth|
    |         scope|      session|
    |       offline|         true|
    |       metered|         true|
    |    authorized|         true|
    |      username|        User1|
    |  billing_type|   PayAsYouGo|
    | session_usage|            0|
    +--------------+-------------+
  • Disconnected authorization:

    Python
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    import geoanalytics, time
    
    print("Before authorization:")
    geoanalytics.auth_info().show()
    
    geoanalytics.auth(license_file=r"/engine/license.ecp")
    time.sleep(10)
    
    print("After authorization:")
    geoanalytics.auth_info().show()
    Result
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Before authorization:
    +----+-----+
    |name|value|
    +----+-----+
    +----+-----+
    
    After authorization:
    
    +--------------+------------+
    |          name|       value|
    +--------------+------------+
    |session_uptime|       10015|
    |          auth|license/file|
    |         scope|     session|
    |       offline|        true|
    |       metered|       false|
    |    authorized|        true|
    |       expires|  2022-10-19|
    +--------------+------------+

Deauthorization

Once you authorize GeoAnalytics Engine, it will remain authorized until the Spark session is ended or until you call the deauthorization function, geoanalytics.deauth().

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.

You can no longer sign into this site. Go to your ArcGIS portal or the ArcGIS Location Platform dashboard to perform management tasks.

Your ArcGIS portal

Create, manage, and access API keys and OAuth 2.0 developer credentials, hosted layers, and data services.

Your ArcGIS Location Platform dashboard

Manage billing, monitor service usage, and access additional resources.

Learn more about these changes in the What's new in Esri Developers June 2024 blog post.

Close