使用Spark可以按文件数量分桶的解决方法如下:
from pyspark.sql import SparkSession
from pyspark.sql.functions import monotonically_increasing_id
spark = SparkSession.builder.getOrCreate()
file_list = ["file1.csv", "file2.csv", "file3.csv", ...]
df = spark.read.csv(file_list, header=True, inferSchema=True)
df = df.withColumn("file_index", monotonically_increasing_id())
num_files = len(file_list)
num_buckets = 10
df = df.withColumn("bucket", df.file_index % num_buckets)
buckets = []
for i in range(num_buckets):
bucket = df.filter(df.bucket == i)
buckets.append(bucket)
现在,buckets
列表中的每个元素都是一个DataFrame,包含分配到相应桶的文件。你可以根据需要进一步操作或分析这些数据。
上一篇:按文件数量拆分gzip文件
下一篇:按文件中的第一列进行排序