2

sparklyr用来运行一些分析,但我也有兴趣SQL使用DBI.

我能够运行以下查询

query <- "SELECT col1, FROM mydata WHERE some_condition"
dataframe <- dbGetQuery(spark_connection, query)

但这会将数据返回到 R 中(在数据框中)。

我想要的是将数据保留在 Spark 中并将其存储在另一个Spark Dataframe中,以便与sparklyr.

有任何想法吗?

4

2 回答 2

1

你也可以这样做:

mydata_spark_df <- tbl(sc, sql("select * from mydata"))
于 2018-06-01T18:32:02.607 回答
1

使用的问题DBI是内存。您将无法使用它获取大量数据。如果您的查询结果返回大量数据,则会压倒 spark 的驱动程序内存并导致内存不足错误...

sparklyr 发生的情况如下。DBI运行sql命令 a 返回一个 R DataFrame,这意味着它正在收集数据以在常规 R 上下文中实现它。

因此,如果您想使用它来返回小型数据集,则不需要 spark。

那么DBI 不是您的解决方案SparkR如果您想为此坚持使用 R, 则应该使用常规。

这是有关如何使用sqlin的示例sparkr

sc %>% spark_session %>% 
   invoke("sql", "SELECT 1") %>% 
   invoke("createTempView", "foo")
于 2017-06-17T16:13:54.450 回答