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.
- Read Workbook
- Replaced with Read Workbook v2
- Create Workbook
- Replaced with Create Workbook v2
- Update Workbook
- Replaced with Update Workbook v2
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
.
- The SDK type is called
- 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
.
- The SDK type is called
- 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
.
- The SDK type is called
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 eitherUSER
,SCHEDULER
,RESTAPI
,IMPORTJOB
,EXPORTJOB
, orWORKBOOK
.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 SDK type is called
- 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
- Many
- 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
changedpublic 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
addedpublic abstract Long id(); public abstract DateTime createdAt(); public abstract DateTime modifiedAt(); public Variable withValue(String newValue)
datameer.dap.sdk.importjob.ImportFormat.java
changedvoid 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
changedpublic 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
removedpublic 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
removedVARIABLES_READ(ADMINISTRATION_ACCESS),
datameer.dap.sdk.usermanagement.CapabilityEvaluation.java
removedpublic boolean canReadVariables() {