Zip-файлы содержат несколько тысяч очень маленьких файлов.
Я читаю файлы в двоичном формате. File и я используем UDF для разархивирования файлов:
Код: Выделить всё
schema = ArrayType(StringType())
@F.udf(returnType=schema)
def unzip_content_udf(content):
extracted_files = []
with py7zr.SevenZipFile(io.BytesIO(content), mode='r') as z:
for name, bytes_stream in z.readall().items():
if name.startswith("v1") or name.startswith("v2"):
unzipped_content = bytes_stream.read().decode(ENCODING)
extracted_files.append(unzipped_content)
return extracted_files
df = spark.read.format("binaryFile").load("/mnt/file_pattern*")
df = df.withColumn("unzipped_files", unzip_content_udf(F.col("content")))
df.write.mode("overwrite").parquet("/mnt/test_dump_unzipped")
Код: Выделить всё
Py4JJavaError: An error occurred while calling o1665.parquet.
ValueError: can not serialize object larger than 2G
Есть ли у вас какие-либо идеи, как увеличить предел или как разделить размер операции разархивирования ниже ограничения?
Подробнее здесь: https://stackoverflow.com/questions/792 ... databricks
Мобильная версия