我正在编写一个使用外部数据的函数,如下所示:首先,它检查数据是否在data/文件夹中,如果不在,则创建data/文件夹,然后从github下载文件;如果数据已经在data/文件夹中,它将对其进行读取并执行计算。
问题是,当我运行时:
devtools::check()
Run Code Online (Sandbox Code Playgroud)
它返回:
Error: 'data' is not an exported object from 'namespace:my_package'
Run Code Online (Sandbox Code Playgroud)
我应该手动穿上东西NAMESPACE吗?
一个例子:
my_function <- function(x){
if(file.exists("data/data.csv")){
my_function_calculation(x = x)
} else {
print("Downloading source data...")
require(RCurl)
url_base <-
getURL("https://raw.githubusercontent.com/my_repository/data.csv")
dir.create(paste0(getwd(),"/data"))
write.table(url_base,"data/data.csv", sep = ",", quote = FALSE)
my_function_calculation(x = x)
}
}
my_function_calculation <- function(x = x){
data <- NULL
data <- suppressMessages(fread("data/data.csv"))
#Here, I use data...
return(data)
}
Run Code Online (Sandbox Code Playgroud) 我sparklyr在Windows服务器上使用Spark 2.0.2与RStudio 上的0.5.4-9004 结合使用.
每隔一段时间,当我尝试从spark服务器收集,读取或写入数据时,我收到以下错误:
Error in UseMethod("invoke") :
no applicable method for 'invoke' applied to an object of class "character"
Run Code Online (Sandbox Code Playgroud)
我不确定这是服务器问题,还是有问题sparklyr.
到目前为止,我必须解决这个问题的唯一方法是重新启动sparklyr与Spark 的连接.
这是我正在使用的简单代码:
sc <- spark_connect(master = "spark://####:7077")
tibble_file_parquet <- spark_read_parquet(
sc, "file_parquet", path, overwrite = TRUE)
result <- tibble_file_parquet %>% count(x, y)
collect(result)
Run Code Online (Sandbox Code Playgroud) 有没有一种方法可以使用sparklyr / dplyr函数复制Spark数据帧的行?
sc <- spark_connect(master = "spark://####:7077")
df_tbl <- copy_to(sc, data.frame(row1 = 1:3, row2 = LETTERS[1:3]), "df")
Run Code Online (Sandbox Code Playgroud)
这是所需的输出,保存到新的spark tbl中:
> df2_tbl
row1 row2
<int> <chr>
1 1 A
2 1 A
3 1 A
4 2 B
5 2 B
6 2 B
7 3 C
8 3 C
9 3 C
Run Code Online (Sandbox Code Playgroud) 我正在尝试dataframe使用 Sparklyr 的函数将一个大的(大约 580 万条记录)复制到 Spark 中copy_to。
首先,当使用fread( data.table)加载数据并应用该copy_to函数时,出现以下输出错误:
as.data.frame.default(x[[i]], optional = TRUE) 中的错误:无法将类 ""integer64"" 强制转换为 data.frame
然后,我将仅有的两列类型更改integer64为character,然后将as.data.frame(它是 a data.table,因为我使用过fread)应用于所有数据。
copy_to再次使用,前后等了很久才出现进度条,但是返回如下结果:
invoke_method.spark_shell_connection(sc, TRUE, class, method, 中的错误:没有返回状态。Spark R 后端可能已失败。
没有数据被复制到 Spark 中。
有什么想法吗?
我正在尝试使用spark_read_csv将大型数据库复制到Spark中,但我收到以下错误作为输出:
错误:org.apache.spark.SparkException:作业因阶段失败而中止:阶段16.0中的任务0失败4次,最近失败:阶段16.0中丢失任务0.3(TID 176,10.1.2.235):java.lang.IllegalArgumentException :要求失败:十进制精度8超过最大精度7
data_tbl <- spark_read_csv(sc, "data", "D:/base_csv", delimiter = "|", overwrite = TRUE)
Run Code Online (Sandbox Code Playgroud)
这是一个大数据集,约有580万条记录,我的数据集中包含类型数据Int,num以及chr.