iServer REST API获取分布式分析的源数据集
背景:随着大数据的普及,越来越多的人使用iserver的分布式分析模块,但是不管是iclient示例还是之前的rest api的示例,都是手动的输入iserver中可用的源数据集名字,这在开发中肯定是不可取的。所以今天我们来使用iServer REST API获取源数据集。一. 查看分布式分析算子的REST API从api中可以看到源数据集的来源一共大致分为3类(这里不介绍直接输入文件路径...
背景:
随着大数据的普及,越来越多的人使用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]);
}
最终实现效果如下:
更多推荐
所有评论(0)