Apache spark 有办法在加载时缓存吗?

Apache spark 有办法在加载时缓存吗?,apache-spark,apache-spark-sql,Apache Spark,Apache Spark Sql,是否有sparksession.read()选项可以在加载时缓存?我正在从s3读取xml文件,它首先扫描这些文件以派生一个模式。因为它正在读取文件,所以我宁愿在那个时候加载,这样它只读取s3中的所有文件一次 有没有办法做到这一点 我已经搜索了“spark”、“cache”、“load”和“read”的每一个组合,至少深入了两页 sparkSession.read().format("com.databricks.spark.xml") .load("s3a://<your path h

是否有sparksession.read()选项可以在加载时缓存?我正在从s3读取xml文件,它首先扫描这些文件以派生一个模式。因为它正在读取文件,所以我宁愿在那个时候加载,这样它只读取s3中的所有文件一次

有没有办法做到这一点

我已经搜索了“spark”、“cache”、“load”和“read”的每一个组合,至少深入了两页

sparkSession.read().format("com.databricks.spark.xml")
  .load("s3a://<your path here>")
sparkSession.read().format(“com.databricks.spark.xml”)
.加载(“s3a://”)

val rawData=sparkSession.read().format(“com.databricks.spark.xml”).load(“s3a:/”).cache()
可以使用前一行,请记住,与RDD一样,加载将被延迟评估。因此,调用load函数不会立即从S3加载数据。它将等待在返回的数据帧
rawData
中执行操作。对
rawData
应用的任何后续转换都将使用缓存的
rawData
,并且不会再次扫描文件,即使任务中途失败并必须重新启动,
rawData
将根据缓存版本的沿袭(DAG)构建。它会在加载时读取,它这样做是为了派生模式。即使我执行.cache().count(),它仍然会在以后的步骤中重新读取相同的数据集,即使它完全在内存中。Spark是我使用过的最令人沮丧的技术。