如何使用sparklyr在后续SQL查询中访问已创建的Spark DataFrame
使用sparklyr将Spark DataFrame注册为临时视图用于SQL查询
在sparklyr中,你可以用sdf_register()函数把已创建的Spark DataFrame注册成Spark临时视图,这样就能在后续的sdf_sql()查询中直接引用它,完全不需要依赖SparkR库。具体步骤如下:
- 第一步:创建目标DataFrame(即你已写的代码)
df_01 <- sdf_sql(sc, "select * from database.table")
- 第二步:将df_01注册为临时视图
用sdf_register()指定视图名称,比如把视图命名为df_01_temp:
sdf_register(df_01, "df_01_temp")
- 第三步:在后续SQL中直接引用这个视图
现在就可以像查询普通表一样在sdf_sql()里使用这个视图名了:
df_02 <- sdf_sql(sc, "select * from df_01_temp")
额外说明
- 上面创建的是会话级临时视图,仅在当前Spark会话
sc中有效,会话关闭后视图就会被销毁。 - 如果需要跨会话访问,可以注册全局临时视图,只需要把视图名加上
global_temp.前缀:
sdf_register(df_01, "global_temp.df_01_global")
查询时要带上前缀:
df_02 <- sdf_sql(sc, "select * from global_temp.df_01_global")
全局临时视图会一直存在,直到Spark集群重启。
内容的提问来源于stack exchange,提问作者Scott
相关产品推荐
相关产品推荐

