簡體   English   中英

指定列名稱的spark_apply錯誤

[英]spark_apply error specifying column names

我正在Windows 10中的RStudio以本地模式運行sparklyr

spark_version <- "2.1.0"
sc <- spark_connect(master = "local", version = spark_version)
df <- data.frame(id = c(1, 1, 2, 2), county_code = c(1, 20, 321, 2))
sprintf("%03d",as.numeric(df$county_code))

df_tbl = copy_to(sc,df, "df_tbl", overwrite = TRUE)
df_tbl %>% summarise(sum = sum(county_code)) %>% collect() ## this works

## this does not:
df_tbl %>% 
   spark_apply(function(e) data.frame(sprintf("%03d",as.numeric(e$county_code), e),
                                     names = c('county_code_fips', colnames(e))))

最后一行返回以下錯誤:

Error in file(con, "r") : cannot open the connection
In addition: Warning message:
In file(con, "r") :
  cannot open file 'C:\Users\janni\AppData\Local\Temp\RtmpELRVxu\file4ab817055ccc_spark.log': Permission denied

這在我的筆記本電腦和台式機上都會發生。 我嘗試以管理員身份運行RStudio,但不會進行任何更改。

看來問題出在為spark_apply指定的names的方式上。

一種選擇是,沒有names參數,您可以不這樣做。

df_tbl %>% 
 spark_apply(function(e) data.frame(county_code_fips = 
                                 sprintf("%03d",as.numeric(e$county_code)), e))

## Source: spark<?> [?? x 3]
#  county_code_fips    id county_code
#  <chr>            <dbl>       <dbl>
#1 001                  1           1
#2 020                  1          20
#3 321                  2         321
#4 002                  2           2

由於names無法訪問spark_apply內部函數中的e ,因此您必須使用tbl中的名稱。

df_tbl %>% 
 spark_apply(function(e) 
     data.frame(sprintf("%03d",as.numeric(e$county_code)), e), 
     names = c('county_code_fips', colnames(df_tbl)))

## Source: spark<?> [?? x 3]
#  county_code_fips    id county_code
#  <chr>            <dbl>       <dbl>
#1 001                  1           1
#2 020                  1          20
#3 321                  2         321
#4 002                  2           2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM