当我读取包含大量文件的数据集时(在我的情况下来自谷歌云存储),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-name/table_name")
...
<some df manipulation>
...
答案 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")