【发布时间】:2017-11-19 14:40:27
【问题描述】:
我正在使用sparklyr 进行一些分析,但我也有兴趣使用DBI 编写原始SQL 查询。
我可以运行以下查询
query <- "SELECT col1, FROM mydata WHERE some_condition"
dataframe <- dbGetQuery(spark_connection, query)
但这会将数据返回到 R 中(在数据框中)。
我想要的是将数据保留在 Spark 中并将其存储在另一个 Spark Dataframe 中,以便与 sparklyr 进一步交互。
有什么想法吗?
【问题讨论】:
-
使用 DBI 的问题是内存。您将无法使用它获取大量数据。如果你的查询结果返回的数据量很大,就会压垮spark的驱动内存,导致内存不足的错误……所以如果你想用它来返回小数据集,你就不需要spark了。跨度>
-
那么 DBI 不是您的解决方案;如果你想坚持使用 R,你应该使用常规 SparkR
-
这不是 sparklyr 发生的事情,DBI 运行 sql 命令 a 返回一个 R DataFrame,这意味着它正在收集数据以在常规 R 上下文中实现它。
-
dbSendQuery 不提取任何记录...我认为它用于缓存表、创建视图等(Hive 查询语言 DSL)
标签: sql r apache-spark sparklyr r-dbi