代码之家  ›  专栏  ›  技术社区  ›  R overflow

SparkyR中缺少Concat\u ws()函数

  •  0
  • R overflow  · 技术社区  · 6 年前

    http://datafeedtoolbox.com/attribution-theory-the-two-best-models-for-algorithmic-marketing-attribution-implemented-in-apache-spark-and-r/

    在本例中,他们使用以下函数: 混凝土 (来自图书馆(sparklyr))。但是看起来函数不存在(在安装包并调用库之后,我收到一个错误,该函数不存在……)。

    评论博客作者: https://spark.apache.org/docs/2.2.0/api/java/org/apache/spark/sql/functions.html 所以,你必须依靠sparklyr来实现这个功能。

    我的问题是:有没有解决方法可以访问concat\u ws()函数?我试过:

    功能的目标是什么? 使用给定的分隔符将多个输入字符串列连接到一个字符串列中。

    2 回复  |  直到 6 年前
        1
  •  2
  •   strawberryBeef    6 年前

    你可以简单地使用 paste 从右基座开始。

    library(sparklyr)
    library(dplyr)
    
    config <- spark_config()
    sc <- spark_connect(master = "local", config = config)
    
    df <- as.data.frame(cbind(c("1", "2", "3"), c("a", "b", "c")))
    sdf <- sdf_copy_to(sc, df, overwrite = T)
    
    sdf %>%
      mutate(concat = paste(V1, V2, sep = "-"))
    
        2
  •  2
  •   user10497664 user10497664    6 年前

    找不到该函数,因为它不存在于中 sparklyr concat_ws 是一个Spark SQL函数( org.apache.spark.sql.functions.concat_ws

    火花 取决于SQL转换层-函数调用被转换为SQL表达式 dbplyr :

    > dbplyr::translate_sql(concat_ws("-", foo, bar))
    <SQL> CONCAT_WS('-', "foo", "bar")
    

    这意味着该函数只能在 火花 上下文:

    sc <- spark_connect(master = "local[*]")
    df <- copy_to(sc, tibble(x="foo", y="bar"))
    
    df %>% mutate(xy = concat_ws("-", x, y))
    # # Source: spark<?> [?? x 3]
    #   x     y     xy     
    # * <chr> <chr> <chr>  
    # 1 foo   bar   foo-bar