Important API and SDK Changes for Developers

Important API and SDK changes for developers by version.

7.0

Deprecated REST API calls

The following REST API calls have been deprecated as of Datameer 7.0 and are scheduled to be removed before Datameer X.

New job execution events for the SDK

Datameer introduced four new events regarding to job execution (e.g., running a data source or workbook).

  • A job started event is published on the event bus with a job execution id, data directory, and the job metadata when a job starts (the job status changes to RUNNING).
    • The metadata of a job will be determined when the job switches from QUEUED to RUNNING; if a user would make changes during this time these changes will be taken when the job switches to RUNNING.
    • The SDK type is called JobExecutionStartedEvent.
  • A job canceled event is published on the event bus with a job execution id, data directory, and owner when a job gets canceled.
    • The SDK type is called JobExecutionCanceledEvent.
  • A job completed event is published on the event bus with a job execution id, data directory, and owner when a job successfully (with data) completes.
    • The SDK type is called JobExecutionCompletedEvent.
  • A job failed event is published on the event bus with a job execution id, data directory and owner when a job failed during execution.
    • The SDK type is called JobExecutionFailedEvent.

Details about the job execution status events

  • The executing user of a job is the user that runs the job. This user is always the owner of the job.
  • The triggering user of a job is the user who performed the job start action. This depends on:
    • if the job is triggered manually, the logged in user is the triggering user.
    • if the job is triggered by the scheduler, the job owner is also the triggering user.
  • The JobExecutionStartedEvent published on the event bus consists of the fields:
    • dataDir with an URI where the data resides in HDFS.
    • executingAs which contains information about the executing user (the running user).
    • jobExecutionId which is the ID of the job execution.
    • jobMetaData which contains the data about the job (e.g., the sheets and columns of a workbook)
    • triggeredBy which is either USERSCHEDULERRESTAPIIMPORTJOBEXPORTJOB, or WORKBOOK.
    • performedBy which contains information about the triggering user.
  • Depending on the cluster mode the executing user of a job is potentially used to authenticate against the cluster/HDFS

Download data event for the SDK

  • An event is published on the event bus when a user is downloading data from a worksheet or a data source on the "Browse All Data" page.
    • The SDK type is called DownloadDataEvent.
  • The event consist of:
    • The file UUID from the workbook or data source.
    • A list of sheet data which has one or multiple SheetData instances attached to it.
      • Many SheetData instances are available when the import job is in append mode or partitioned.
      • Many SheetData instances are when the file upload is partitioned.
      • Many SheetData instances are when the workbook sheet is partitioned. 
      • Otherwise we have only one sheet data instance
    • The user who is performing the download

7.1

Creating plug-ins with the Datameer SDK

The Datameer 7 SDK now uses gradle rather than ant to build plug-ins. Learn more about creating plug-ins using the SDK.

Session cookies no longer available for authentication using the REST API 

As of Datameer 7.1.6

For enhanced security performance, users are not able authenticate a REST API call using session cookies. Datameer recommends using basic authentication when using the REST API.

Example:

curl -u <username>:<password>

7.4

Artifact identifier added to job-details REST call

The REST API for job-details has been updated to include the jobConfigurationID, file-id, and uuid. Both the file-id and uuid can be used as identifiers for all v2 REST API calls.

7.5

REST API For global variables

The REST API can be used to create, update, delete, and list global variables in Datameer.

SDK class changes

  • datameer.dap.sdk.entity.v2.SheetData.java

    changed
    public static ImmutableMap<Path, RecordSchema> toMap(Iterable<SheetData> sheetDatas, SheetArtifactType sheetArtifactType) 
    too
    public static SheetPreviewDataMetadata toMap(Iterable<SheetData> sheetDatas, SheetArtifactType sheetArtifactType) {
  • datameer.dap.sdk.entity.v2.variable.Variable.java

    added
    public abstract Long id();
    public abstract DateTime createdAt();
    public abstract DateTime modifiedAt();
    public Variable withValue(String newValue)
  • datameer.dap.sdk.importjob.ImportFormat.java

    changed
    void registerFilterExpression(DasJobEnvironment environment, String filterExpression, String sourceSheetName);
    too
    default void registerFilterExpression(DasJobEnvironment environment, String filterExpression, String sourceSheetName, Iterable<Variable> variables)
  • datameer.dap.sdk.importjob.AbstractImportFormat.java

    removed
        @Override
        public void registerFilterExpression(DasJobEnvironment environment, String filterExpression, String sourceSheetName) {
            // DO NOTHING
        }
  • datameer.dap.sdk.importjob.DelegateImportFormat.java

    changed
    public void registerFilterExpression(DasJobEnvironment environment, String filterExpression, String sheetName) {
    too
    public void registerFilterExpression(DasJobEnvironment environment, String filterExpression, String sheetName, Iterable<Variable> variables) {
  • datameer.dap.sdk.importjob.Splitter.SplitHint

    removed
    public static final String MAPRED_MAP_SLOT_COUNT = "mapred.map.slot-count";
    public static final String MAPRED_REDUCE_SLOT_COUNT = "mapred.reduce.slot-count";
    
    
    public SplitHint(Configuration conf) {
    public SplitHint(Configuration conf, int desiredSplitCount) {
    public int getMapSlotCount() {
    public int getReduceSlotCount() {
    public boolean shouldIgnoreReplicationFactor() {
  • datameer.dap.sdk.usermanagement.Capability.java

    removed
    VARIABLES_READ(ADMINISTRATION_ACCESS),
  • datameer.dap.sdk.usermanagement.CapabilityEvaluation.java

    removed
    public boolean canReadVariables() {