Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Important API and SDK changes for developers by version.

Table of Contents

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 8.0.

New job execution events for the SDK

...

  • 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 either USER, SCHEDULER, RESTAPI, IMPORTJOB, EXPORTJOB, or 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

...

  • 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 Many SheetData instances are available when the import job is in append mode or partitioned.
      • Many Many SheetData instances are when the file upload is partitioned.
      • Many 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

...

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.

...

Panel
curl -u <username>:<password>
  

7.4

Artifact identifier added to job-details REST call

The The REST API for job-details has been updated to  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.datastore.v2.DataStoreTypeV2.java

    Code Block
    languagejava
    titlechanged
        /**
         * Validates the connection set-up and returns an exception if the connection is not properly configured. This
         * should be overwritten by the implementation.
         * 
         * @param config
         * @param connection
         * @return exception if the connection is not properly configured.
         */
        public Optional<Exception> validateSetUp(Config config, Connection connection) {
            return validateSetUp(connection);
        }
    
        /**
         * Validates the connection set-up and returns an exception if the connection is not properly configured.
         * 
         * @param connection
         * @return exception if the connection is not properly configured.
         * @deprecated please use {@link #validateSetUp(Config, Connection)} instead.
         */
        @Deprecated
        @DeprecatedSince("7.6.0")
        public Optional<Exception> validateSetUp(Connection connection) {
            throw new RuntimeException("Please overwrite validateSetUp(Config config, Connection connection)");
        }
  • datameer.dap.sdk.datawarehouse.DataWarehouseClient.java

    Code Block
    languagejava
    titleadded
    public abstract Optional<Exception> testAccess();
  • datameer.dap.sdk.entity.v2.SheetData.java

    Code Block
    languagejava
    titlechanged
    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

    Code Block
    languagejava
    titleadded
    public abstract Long id();
    public abstract DateTime createdAt();
    public abstract DateTime modifiedAt();
    public Variable withValue(String newValue)
  • datameer.dap.sdk.entity.v2.workbook.ColumnBasedSheetFilterArgument.java

    Code Block
    languagejava
    titleadded
     LIST_EQUALS,
     LIST_NOT_EQUALS,
  • datameer.dap.sdk.importjob.ImportFormat.java

    Code Block
    languagejava
    titlechanged
    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

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

    Code Block
    languagejava
    titlechanged
    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

    Code Block
    languagejava
    titleremoved
    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

    Code Block
    languagejava
    titleremoved
    VARIABLES_READ(ADMINISTRATION_ACCESS),
  • datameer.dap.sdk.usermanagement.CapabilityEvaluation.java

    Code Block
    languagejava
    titleremoved
    public boolean canReadVariables() {
  • datameer.dap.sdk.util.ValueValidator.java

    Code Block
    languagejava
    titlechanged
    ValidationResult validate(Object value);
    too
    ValidationResult validate(Object value, ValueType valueType);