我有一些 ETL 代码,我读取 csv 数据将它们转换为数据帧,通过利用 pyspark RDD(弹性分布式数据集)的地图对数据进行某些转换后组合/合并数据帧。最后,当我将结果保存为输出时文件,它将输出保存到多个文件中。有没有办法,我可以配置它可以输出多少个文件或指定每个文件的大小?这样我就可以在每个文件中打印一定数量的行/行?
import pandas as pd
# Read the CSV files
df_one = pd.read_csv('one.csv')
df_two = pd.read_csv('two.csv')
# Merge on the truncated ID
df_combined = pd.merge(df_one , df_two , how='inner', left_on='truncated_id', right_on='id')
...
merged_rdd = merged.rdd.map(some_function)
merged_rdd.saveAsTextFile('/output.json')
使用
df.iloc[n:m]
可以控制行数 (pandas.Dataframe.iloc)。这样做一个循环将有助于您的每个 CSV 具有相同的行数。
尽管要计算每个文件的大小,您需要考虑每个单元格的值表示形式作为字符串的长度,加上可能的双引号包装和转义字符,不要忘记行结尾,当然还有标题。