有没有办法在sparkR使用databricks中加载.RData或.model文件?

问题描述

我在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运行时)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...