问题描述
我在databricks环境中使用sparkR,并且试图加载使用RStudio创建的XGB模型。
我将模型保存为.RData和.model(使用xgb.save
类型)(只是为了增加进行这项工作的机会),然后将这两个文件都上载到DBFS内的一个文件夹中(数据块)。
现在,我想使用数据块加载模型,以便可以将其应用于新数据,但是总是收到相同的错误消息。这是代码和错误:
%r
# Trying to load the .RData file
load(file='/FileStore/tables/folder/xgb_model.RData')
readChar(con,5L,useBytes = TRUE)错误:无法打开连接readChar(con,5L,useBytes = TRUE)错误:无法打开连接 readChar(con,5L,useBytes = TRUE)错误:无法打开连接
%r
# Trying to load the .model file
xgb.load("/FileStore/tables/folder/xgb_model.model")
xgb.Booster.handle(modelfile = modelfile)中的错误:xgb.Booster.handle(modelfile = modelfile)中的错误: [23:34:59]合并/../dmlc-core/src/io/local_filesys.cc:209:检查失败:allow_null:LocalFileSystem :: Open“ /FileStore/tables/folder/xgb_model.model”:没有此类文件或目录
那有可能吗?
解决方法
public void TokenRequest() {
ResponseEntity<String> response = null;
RestTemplate restTemplate = new RestTemplate();
String credentials = String.format("%s:%s",consumerKey,consumerSecret);
String encodedCredentials = new String(Base64.getEncoder().encodeToString(credentials.getBytes()));
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
//headers.setCertificate??
headers.add("Authorization","Basic " + encodedCredentials);
HttpEntity<String> request = new HttpEntity<String>(headers);
response = restTemplate.exchange(tokenUrl,HttpMethod.POST,request,String.class);
}
是special folder that is located on DBFS,因此要访问此数据,R代码需要了解DBFS。但是在您的情况下,它只能与本地文件一起使用,这就是失败的原因。要使其与FileStore
中的文件一起作为本地文件使用,您需要在FileStore
之前加上/dbfs/
之类的文件名(请注意,它可能不适用于社区版使用7.x运行时)