在Databricks中使用sparklyr注册临时表
我的同事正在在Databricks中使用sparklyr注册临时表,r,pyspark,databricks,sparklyr,R,Pyspark,Databricks,Sparklyr,我的同事正在Databricks中使用pyspark,通常的步骤是使用data=spark.read.format('delta').parquet('parquet_table')运行导入。选择('column1',column2'),然后选择这个缓存步骤,这非常快 data.cache() data.registerTempTable("data") 作为R用户,我正在sparklyr中寻找此registerTempTable等价物 我通常会这样做 data = spa
Databricks
中使用pyspark
,通常的步骤是使用data=spark.read.format('delta').parquet('parquet_table')运行导入。选择('column1',column2')
,然后选择这个缓存步骤,这非常快
data.cache()
data.registerTempTable("data")
作为R
用户,我正在sparklyr
中寻找此registerTempTable
等价物我通常会这样做
data = sparklyr::spark_read_parquet(sc = sc, path = "parquet_table", memory = FALSE) %>% dplyr::select(column1, column2)
如果我选择memory=TRUE
或tbl_缓存(sc,“data”)
它将保持运行,并且从不停止。时间差的对比似乎非常明显-我同事的寄存器可清空
需要几秒钟,而我的sparklyr
选项保持运行,即不知道何时停止。R
用户的sparklyr
中是否有更好的功能可以更快地执行此操作RegisterEmptable
?您可以尝试使用和
库(SparkR)
df上述方法适用于SparkR
对于SparkyR,您正在用memory=FALSE
对spark\u read\u parquet()
进行编码,这是一个与SparkR非常相似的过程
如果只想创建一个临时表,则不需要缓存数据,因此我只需使用memory=FALSE
请参阅。事实上,只有7秒钟。它相当快!究竟为什么Sparkyr无法使用此选项?
library(SparkR)
df <- read.df("/databricks-datasets/Rdatasets/data-001/csv/ggplot2/diamonds.csv", source = "csv", header="true", inferSchema = "true")
cache(df)
createOrReplaceTempView(df,"df_temp")