合并数据帧时出现 StackOverFlow 错误

问题描述 投票:0回答:0

我们在 S3 中有一个对象,它有接近 100K 的文件。我们遍历每个文件并生成它的模式。下面的 PySpark 代码适用于具有 5K 文件的对象,但对于具有更多文件的对象会抛出 StackOverflow 错误。

对于超过 500 个文件的对象,它会在 unionAll 行中抛出 StackOverFlow 错误。

如有任何建议,我们将不胜感激!

PySpark 代码:

  schema_empty = structType([structField("col_name",StringType(),True), structField("data_type",StringType(),True)structField("file_name",StringType(),True)])
  
  schema_df = spark.createDataFrame([],schema_empty)

  schema_file = structType([structField("col_name",StringType(),True), structField("file_name",StringType(),True)])

  for page in pages:
     for obj in page['Contents']:
        s3_file = "s3://" + bucket + obj["Key"]
        df = spark.read.option("header","True").option("inferSchema","True").parquet(s3_file)
        col_list = df.dtypes
        df = spark.createDataFrame(col_list, schema_file)
        df_name = df.withColumn("filename",lit(s3_file))
        schema_df = schema_df.unionAll(df_name)
dataframe pyspark iteration union-all
© www.soinside.com 2019 - 2024. All rights reserved.