After many, many hours of trying to resolve this, I figured out a hack that _solves_ the problem, but it's not optimal. I basically read the directory listing of files and then merge them via unions and do a save out.
my_schema = StructType([
StructField("ordered", StringType()),
StructField("by", TimestampType()),
StructField("schema", LongType()),
StructField("provided", DoubleType()),
])
df = spark.createDataFrame(data=[], schema=my_schema)
# ...
for table_file in table_files:
df = df.union(
spark.read.option("mergeSchema", False)
.option("spark.databricks.io.cache.enabled", False)
.parquet(
f"s3://my-bucket/data/{table_file}"
)
# Transformations
.select('ordered', 'by', 'schema', 'provided')
)