阿里云DataHub RestAPI使用示例

简介: 阿里云流数据处理平台DataHub是流式数据(Streaming Data)的处理平台,提供对流式数据的发布(Publish),订阅(Subscribe)和分发功能,让您可以轻松构建基于流式数据的分析和应用。

概述

阿里云流数据处理平台DataHub是流式数据(Streaming Data)的处理平台,提供对流式数据的发布(Publish),订阅(Subscribe)和分发功能,让您可以轻松构建基于流式数据的分析和应用。目前官方提供了Java和Python的SDK,用户可以方便的使用SDK完成相关功能的集成开发。目前管理API还没有提供对应的SDK,本文以通用的org.apache.http.client.HttpClient为依赖,演示API如何创建Project,其它类型API的使用方法类似。


pom.xml

<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.4</version>
</dependency>

Code Sample

import org.apache.commons.codec.binary.Base64;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.net.URI;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Locale;
import java.util.TimeZone;


//创建DataHub Project
public class Demo {

    public static void main(String[] args) {

        String accesskey = "********";
        String accessSecret = "********";
        String projectName = "testproject";//项目的名称
        String resource = "/projects/" +projectName;

        //获取系统时间
        Calendar cd = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss 'GMT'", Locale.US);
        sdf.setTimeZone(TimeZone.getTimeZone("GMT")); // 设置时区为GMT
        String str = sdf.format(cd.getTime());

        //生成Authorization认证信息
        String strToSign = "POST\n" +
                "application/json\n" +
                 str +
                "\n" +
                "x-datahub-client-version:1.1\n" +
                resource;

        byte[] crypto = hmacsha1Signature(strToSign.getBytes(),
                accessSecret.getBytes());

        String signature = Base64.encodeBase64String(crypto).trim();
        String authorization = "DATAHUB " + accesskey + ":" + signature;

        HttpClient httpclient = HttpClients.createDefault();
        try {
            //根据自己创建服务所在的区域设置域名
            URIBuilder builder = new URIBuilder("https://dh-cn-hangzhou.aliyuncs.com" + resource);
            URI uri = builder.build();
            HttpPost request = new HttpPost(uri);
            request.addHeader("Authorization", authorization);
            request.addHeader("x-datahub-client-version", "1.1");
            request.addHeader("Date", str);
            request.addHeader("Content-Type","application/json");

            // Request body
            StringEntity reqEntity = new StringEntity(" {\n" +
                    "      \"Action\": \"create\",\n" +
                    "      \"Comment\": \"create project\"\n" +
                    "  }");

            request.setEntity(reqEntity);
            HttpResponse response = httpclient.execute(request);
            HttpEntity entity = response.getEntity();

            if (entity != null) {
                System.out.println(EntityUtils.toString(entity));
            }
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

    //创建认证签名
    public static byte[] hmacsha1Signature(byte[] data, byte[] key) {
        try {
            SecretKeySpec signingKey = new SecretKeySpec(key, "HmacSHA1");
            Mac mac = Mac.getInstance("HmacSHA1");
            mac.init(signingKey);
            return mac.doFinal(data);
        } catch (Exception e) {
            throw new RuntimeException(e.getMessage(), e);
        }
    }
}

注意

  • DATE 表示此次操作的时间,不能为空,目前只支持GMT格式,如果请求时间和服务器时间相差超过15分钟,服务器会判定此请求的认证信息过期,所以在请求的过程中注意本地机器与标准时间尽量保持同步;
  • strToSign 参数不同的请求类型会不同,请参考官方API文档说明,在使用到其它类型API时进行调整。

更多参考

DataHub API参考

请求签名机制

相关实践学习
实时数据及离线数据上云方案
本实验通过使用CANAL、DataHub、DataWorks、MaxCompute服务,实现数据上云,解决了数据孤岛问题,同时把数据迁移到云计算平台,对后续数据的计算和应用提供了第一步开山之路。
相关文章
|
自然语言处理 Java API
阿里云自然语言处理--文本相似度(电商)Java SDK 调用示例
自然语言处理(Natural Language Processing,简称NLP),是为各类企业及开发者提供的用于文本分析及挖掘的核心工具,旨在帮助用户高效的处理文本,已经广泛应用在电商、文娱、司法、公安、金融、医疗、电力等行业客户的多项业务中,取得了良好的效果。文本相似度可以提供不同文本之间相似度的计算,并输出一个介于0到1之间的分数,分数越大则文本之间的相似度越高。可广泛应用于信息检索,新闻推荐、智能客服等场景。使用该服务建议分数不要用于直接判断,可以作为特征,并按照范围进行分桶。本文将使用Java Common SDK 演示文本相似度(电商)服务的快速调用以供参考。
648 0
阿里云自然语言处理--文本相似度(电商)Java SDK 调用示例
|
自然语言处理 Java 大数据
阿里云自然语言处理--文本纠错(中文)Java 调用示例
自然语言处理(Natural Language Processing,简称NLP),是为各类企业及开发者提供的用于文本分析及挖掘的核心工具,旨在帮助用户高效的处理文本,已经广泛应用在电商、文娱、司法、公安、金融、医疗、电力等行业客户的多项业务中,取得了良好的效果。文本纠错产品是基于海量大数据研发,为有文本纠错需求的产品提供服务。能够准确识别输入文本中出现的拼写错别字及其段落位置信息,并针对性给出正确的建议文本内容。本文将使用Java CommonSDK演示文本纠错(中文)服务的快速调用以供参考。
1378 0
阿里云自然语言处理--文本纠错(中文)Java 调用示例
|
4月前
|
移动开发 JavaScript
简单介绍下阿里云的H5滑动验证+H5示例源码
简单介绍下阿里云的H5滑动验证+H5示例源码
46 0
|
11月前
|
机器学习/深度学习 API Python
阿里云DSW实例wandb使用示例
wandb是一个免费的,用于记录实验数据的工具。wandb相比于tensorboard之类的工具,有更加丰富的用户管理,团队管理功能,更加方便团队协作。本文主要演示如何在阿里云DSW实例中使用wandb。
577 1
|
Rust Linux 对象存储
Python 阿里云OSS文件上传下载与文件删除及检索示例
Python 阿里云OSS文件上传下载与文件删除及检索示例
1032 0
|
监控 安全 API
阿里云短信服务控制台发送记录查询操作示例
短信服务(Short Message Service)是广大企业客户快速触达手机用户所优选使用的通信能力。调用API或用群发助手,即可发送验证码、通知类和营销类短信;国内验证短信秒级触达,到达率最高可达99%;国际/港澳台短信覆盖200多个国家和地区,安全稳定,接入便捷,智能监控调度广受出海企业选用。客户在使用服务后,往往有查询发送记录的需求。短信发送后可通过短信服务控制台查询短信发送记录和详细信息。但查询记录页面仅支持查询最近6个月的单日发送明细,如果需要更长时间段的发送明细,就需要使用导出功能。导出功能支持导出近三年的数据,但是一些客户通常不知这隐藏操作。本文快速演示下导出操作,以供参考。
1218 0
阿里云短信服务控制台发送记录查询操作示例
|
监控 安全 Java
阿里云短信服务批量发送短信API调用示例
短信服务(Short Message Service)是广大企业客户快速触达手机用户所优选使用的通信能力。调用API或用群发助手,即可发送验证码、通知类和营销类短信;国内验证短信秒级触达,到达率最高可达99%;国际/港澳台短信覆盖200多个国家和地区,安全稳定,接入便捷,智能监控调度广受出海企业选用。本文将使用Java SDK对批量发送短发做下快速调用,以供参考。
1736 0
|
Java 语音技术 微服务
阿里云智能语音交互异步长文本语音合成接收回调Java示例
本文详细介绍如何使用异步长文本语音合成接收服务回调数据的Java示例
642 0
阿里云智能语音交互异步长文本语音合成接收回调Java示例
|
人工智能 自然语言处理 文字识别
阿里云子账号(RAM用户)使用人工智能产品相关授权示例
访问控制RAM(Resource Access Management)是阿里云提供的管理用户身份与资源访问权限的服务,使用RAM,您可以创建、管理RAM用户(例如员工、系统或应用程序),并可以控制这些RAM用户对资源的操作权限。当您的企业存在多用户协同操作资源的场景时,RAM可以让您避免与其他用户共享阿里云账号密钥,按需为用户分配最小权限,从而降低企业的信息安全风险。在使用RAM用户(子账号)调用相应API前,需要阿里云账号(主账号)对RAM账号进行相应授权。但是客户在第一次使用过程中往往看到权限问题不知如果解决,更不懂怎么进行授权操作等一系列问题。本文简单介绍在一些服务如何为RAM用户授权。
1151 0
阿里云子账号(RAM用户)使用人工智能产品相关授权示例
|
自然语言处理 开发工具 Python
阿里云机器翻译通用版PythonSDK调用示例
通用版翻译以解决全场景语言障碍为目标,多领域适用,现可支持。通用版翻译引擎致力于解决全场景语言障碍,多领域适用,可快速实现一种语言到另一种语言的自动翻译。依托阿里巴巴领先的自然语言处理技术和海量数据优势,通用版翻译覆盖全球214种语言。 原版SDK建议直接参考阿里云机器翻译通用版调用指南,本文将介绍,基于python实现机器翻译通用版调用
537 0
阿里云机器翻译通用版PythonSDK调用示例

热门文章

最新文章