背景:

随着大数据的普及,越来越多的人使用iserver的分布式分析模块,但是不管是iclient示例还是之前的rest api的示例,都是手动的输入iserver中可用的源数据集名字,这在开发中肯定是不可取的。所以今天我们来使用iServer REST API获取源数据集。

一. 查看分布式分析算子的REST API

在这里插入图片描述
从api中可以看到源数据集的来源一共大致分为3类(这里不介绍直接输入文件路径):数据目录服务导入的数据、注册到 iServer 的数据对应的数据集以及 DataStore 中存储的数据集。

二. 准备数据

iServer 的分布式分析服务支持的输入数据来源,包括以下几种:
iServer DataStore 中存储的关系型数据集;
大数据文件共享中的数据集:
  1.共享目录;
  2.分布式文件存储 HDFS 目录;
空间数据库中存储的数据集;
这几种数据都会存储在数据目录下,所以我们只需要请求数据目录下的数据资源即可。这里可以再分布式分析的时候查看浏览器控制台的network请求,查看到分布式分析可用的所有数据集以及他们的请求url。
在这里插入图片描述

三.代码实现

由于一些分布式分析需要指定类型的数据集,所以这里我们来实现筛选可用源数据集中的点数据集。
其中共享目录需要请求sharefile资源,实现代码如下:

var  yuanPoint=new Array();
$.ajax({
        type: "GET",
        url: "http://localhost:8090/iserver/services/datacatalog/rest/datacatalog/sharefile.rjson?token=您的token",
        data: {},
        dataType: "JSON",
        success: function(result) {
        	for(var i=0;i<result.datasetTypes.length;i++){
        			if(result.datasetTypes[i]=="POINT"){
        				yuanPoint.push(result.datasetNames[i])
        		}
        	};
          } 
         });

iServer DataStore 中存储的关系型数据集以及空间数据库存储在relationship资源下。但是由于直接请求relationship/datasets获取不到数据集的类型,以需要进一步的请求datasets下的单独数据集来判断是否为点数据集。请求代码如下:

$.ajax({
            type: "GET",
            url: "http://localhost:8090/iserver/services/datacatalog/rest/datacatalog/relationship/datasets.rjson?token=您的token ",
            data: {},
            dataType: "JSON",
            success: function(result1) {
        	  for(var i=0;i<result1.datasetNames.length;i++){
        		var s=result1.datasetNames[i];
        		  $.ajax({
                  type: "GET",
                  url: "http://localhost:8090/iserver/services/datacatalog/rest/datacatalog/relationship/datasets/"+s+".rjson?token=您的token ",
                  data: {},
                  dataType: "JSON",
                  success: function(result2) {
        	      if(result2.datasetInfo.type=="POINT"){
        		   yuanPoint.push(result2.datasetInfo.name);
        	       }
                  }
                 });
        	    }
               }
            });

至此所有可用的分布式分析的点数据集都已存进yuanPoint[]数组中。
这里只需将yuanPoint[]遍历到下拉框select中即可简单的实现该功能:

for (var i=0;i < yuanPoint.length; i++) {
         document.getElementById('sel').options[i] = new Option(yuanPoint[i],yuanPoint[i]);
           }

最终实现效果如下:
在这里插入图片描述

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐