为什么我需要在 spark_read_csv() 中指定一个名称并将其分配给一个对象?

Why do I need to specify a name in spark_read_csv() and also assign it into an object?

如果我理解正确(如果不正确请纠正我)sparklyr::spark_read_csv()应该这样使用:

my_table <- spark_read_csv(sc = my_connnection, 
name = "my_table", 
path = "path/to/my/data")

这在我看来(我认为是错误的)违反了 DRY。我将我的对象命名两次,一次是在函数输出的赋值中,另一次是在提供给 name 的参数中,它没有默认值并且是 "The name to assign to the newly generated table."

为什么我 'name' 我的函数输出两次?是否有一个 'spark' 对象接受幕后函数的 name 参数?是否有理由将它们命名为不同的或相同的?

您不必将其分配给对象。您可以通过名称访问它:

dplyr::tbl(sc, "some_name")

sc %>% spark_session() %>% invoke("sql", "SELECT * FROM my_table")

但总的来说,这是一个设计问题。 sparklyr + dplyr 组合将 Spark 视为数据库。当您调用 spark_read_csv 时,它会在 name 下创建一个临时的 table 供 dplyr 后端使用,

除非您按名称计划,否则您可以使用随机字符串(以避免名称冲突)。