如果我理解了正确的用法(如果没有请纠正我),sparklyr::spark_read_csv()
应该像这样使用:
my_table <- spark_read_csv(sc = my_connnection,
name = "my_table",
path = "path/to/my/data")
在我看来(我认为是错误的)违反DRY。我将对象命名两次,一次是在函数输出的赋值中,一次是在name
的提供参数中,它没有默认值,并且是“要分配给新生成的表的名称。” / p>
为什么我将该功能的输出命名为两次?是否有一个'spark'对象在幕后获取函数的name
参数?是否有理由以不同的方式命名它们,或者相同?
答案 0 :(得分:1)
您不必将其分配给对象。您只需按名称访问它:
dplyr::tbl(sc, "some_name")
或
sc %>% spark_session() %>% invoke("sql", "SELECT * FROM my_table")
但总的来说,这是一个设计问题。 sparklyr
+ dplyr
组合将Spark视为数据库。当您致电spark_read_csv
时,会在name
下创建一个可供dplyr
后端使用的临时表,
除非您按名称计划,否则您可以使用随机字符串(以避免名称冲突)。