R - 如何使用sparklyr复制spark数据框中的行

标签 r apache-spark sparklyr

有没有办法使用sparklyr/dplyr的函数来复制Spark数据帧的行?

sc <- spark_connect(master = "spark://####:7077")

df_tbl <- copy_to(sc, data.frame(row1 = 1:3, row2 = LETTERS[1:3]), "df")

这是所需的输出,保存到新的 Spark 表中:

> 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

最佳答案

使用sparklyr,您可以按照@Oli的建议使用arrayexplode:

df_tbl %>% 
  mutate(arr = explode(array(1, 1, 1))) %>% 
  select(-arr)

# # Source:   lazy query [?? x 2]
# # Database: spark_connection
#    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    

和广义

library(rlang)

df_tbl %>%  
  mutate(arr = !!rlang::parse_quo(
    paste("explode(array(", paste(rep(1, 3), collapse = ","), "))")
  )) %>% select(-arr)

# # Source:   lazy query [?? x 2]
# # Database: spark_connection
#    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   

您可以在其中轻松调整行数。

关于R - 如何使用sparklyr复制spark数据框中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44530564/

相关文章:

apache-spark - 为什么 Spark streaming 创建具有 0 个事件的批处理?

r - 使用 sparklyr 将数据从数据库传输到 Spark

r - 按组和变量名称缩放 R 数据框中的值

r - 以 Shiny 的形式下载 rpivotTable 输出

scala - Spark中的FSDataInputStream ClassNotFoundException

scala - Spark-SQL : How to read a TSV or CSV file into dataframe and apply a custom schema?

r - Sparklyr:sdf_copy_to失败,包含350 MB数据集

R:在使用 dplyr Sparklyr/通过 Sparklyr 连接中的管道操作数据时,在 as.numeric() 之后出现 NaN

r - 使用 httr R 接受 gzip 编码

从R中的字符串中删除表情符号