如何缓存Spark数据框并在另一个脚本中引用它

Mat*_*aum 11 apache-spark apache-spark-sql pyspark pyspark-sql

是否可以缓存数据框,然后在另一个脚本中引用(查询)它?...我的目标如下:

  1. 在脚本1中,创建一个数据框(df)
  2. 运行脚本1并缓存df
  3. 在脚本2中,以df查询数据

zer*_*323 7

Spark> = 2.1.0

从Spark 2.1开始,您可以创建全局临时视图(createGlobalTempView),只要原始会话保持活动状态,就可以使用相同的Metastore在多个会话中访问它们:

此临时视图的生命周期与此Spark应用程序相关联.

全局临时视图是跨会话.它的生命周期是Spark应用程序的生命周期,即它将在应用程序终止时自动删除.它绑定到系统保留的数据库global_temp,我们必须使用限定名称来引用全局临时视图,例如SELECT * FROM global_temp.view1.

Spark <2.1.0

使用标准Spark二进制文件是不可能的.Spark DataFrame绑定到SQLContext用于创建它的特定内容,并且无法在其外部访问.

有一些工具,例如Apache Zeppelin或Databricks,它们使用注入不同会话的共享上下文.这样您就可以在不同的会话和/或客户语言之间共享临时表.

还有其他的平台,其中包括spark-jobserverApache的点燃,它们提供替代的方式来分享分布式的数据结构.您还可以查看Livy服务器.

另请参阅:在同一Master下的Java和R Apps之间共享SparkContext