使用 fastparquet 在子文件上划分镶木地板文件
Divide parquet file on subfiles using fastparquet
我需要将一个 csv 文件转换为 Parquet 格式。但是这个 csv 文件非常大(超过 65 000 行和 1 000 列),这就是为什么我需要将我的 parquet 文件分成几个子文件,每个子文件有 5 000 行和 200 列)。我已经尝试了 partition_on 和 row_group_offsets,但它不起作用。
我的代码:
import pandas as pd
import fastparquet as fp
df = pd.read_csv('D:\Users\mim\Desktop\SI\LOG\LOG.csv')
fp.write(r'D:\Users\mim\Desktop\SI\newdata.parq', df)
[正确答案]:
import os
import pandas as pd
import fastparquet as fp
pathglobalcsv = 'D:\Users\mim\Desktop\SI'
inputFile = os.path.join(pathglobalcsv, 'LOG.csv')
table = pd.read_csv(inputFile, delimiter=';', chunksize=5000)
listrow = list(table)
columnCount = len(listrow[0])
fileCounter = 0
for row in listrow:
for col in range(1, columnCount, 199):
timestamp = row.ix[:, 0] #timestamp
timestampcolumn = pd.DataFrame(timestamp)
i=col+199
maincols = row.ix[:, col:i] #other columns
maincolumns = pd.DataFrame(maincols)
outputDF = pd.concat([timestampcolumn, maincolumns], axis=1)
#create a new file
fileCounter += 1
#parquet file
fp.write(r'C:\Users\mim\eclipse-workspace\SI\file.part_' + str(fileCounter) + '.par', outputDF)
我需要将一个 csv 文件转换为 Parquet 格式。但是这个 csv 文件非常大(超过 65 000 行和 1 000 列),这就是为什么我需要将我的 parquet 文件分成几个子文件,每个子文件有 5 000 行和 200 列)。我已经尝试了 partition_on 和 row_group_offsets,但它不起作用。
我的代码:
import pandas as pd
import fastparquet as fp
df = pd.read_csv('D:\Users\mim\Desktop\SI\LOG\LOG.csv')
fp.write(r'D:\Users\mim\Desktop\SI\newdata.parq', df)
[正确答案]:
import os
import pandas as pd
import fastparquet as fp
pathglobalcsv = 'D:\Users\mim\Desktop\SI'
inputFile = os.path.join(pathglobalcsv, 'LOG.csv')
table = pd.read_csv(inputFile, delimiter=';', chunksize=5000)
listrow = list(table)
columnCount = len(listrow[0])
fileCounter = 0
for row in listrow:
for col in range(1, columnCount, 199):
timestamp = row.ix[:, 0] #timestamp
timestampcolumn = pd.DataFrame(timestamp)
i=col+199
maincols = row.ix[:, col:i] #other columns
maincolumns = pd.DataFrame(maincols)
outputDF = pd.concat([timestampcolumn, maincolumns], axis=1)
#create a new file
fileCounter += 1
#parquet file
fp.write(r'C:\Users\mim\eclipse-workspace\SI\file.part_' + str(fileCounter) + '.par', outputDF)