Spark保存数据帧元数据并重用它

时间:2017-08-21 05:32:01

标签: apache-spark apache-spark-sql

当我读取包含大量文件的数据集时(在我的情况下来自谷歌云存储),spark.read在第一次操作之前会花很多时间。 我不确定它的作用,但我猜它会映射文件并对它们进行采样以推断架构。

我的问题是,是否可以选择保存收集的有关数据框的元数据,并将其重新用于数据集的其他工作中。

- 更新 -

数据排列如下:

  

GS://桶名/ TABLE_NAME /天= YYYYMMDD / many_json_files

当我跑步时:df = spark.read.json("gs://bucket-name/table_name")这需要花费很多时间。我希望我能做到以下几点:

df = spark.read.json("gs://bucket-name/table_name") 
df.saveMetadata("gs://bucket-name/table_name_metadata") 

在另一场会议中:

df = spark.read.metadata("gs://bucket-name/table_name_metadata").‌​json("gs://bucket-na‌​me/table_name") 
... 
<some df manipulation> 
...

1 个答案:

答案 0 :(得分:1)

如果我们有很多具有相同架构的文件,我们只需要推断一次架构并将其重用于以后的文件。像这样。

val df0 = spark.read.json("first_file_we_wanna_spark_to_info.json")

val schema = df0.schema

// for other files
val df = spark.read.schema(schema).json("donnot_info_schema.json")