Мне нужно сравнить два текстовых файла
- Я не могу найти лучший способ сделать это.
- Столбцы отсортированы в алфавитном порядке, и сравнение не удается, если их сравнивать по 50 0 60 столбцам.
Требования следующие:
- Сравнение по столбцу:
file 1 :
column1 column2 column3
1 b c
2 z j
file 2 :
columnf1 columnf2 columnf3
1 b j
2 z c
Result:
In the column column1 0 differences
In the column column2 0 differences
In the column column3 2 differences
#2. Print the amount of differences and the percentage of differences
#(100*numberDiferents)/(numberRecords*columnsLen)
Result:
2. differences were found.
Percentage of difference: 33%
Это мой код, как я могу его оптимизировать?
Как изменить положение столбца?
#create Dataframe file1
lines = sc.textFile(path_file_one)
parts = lines.map(lambda l: l.split(";"))
file1 = parts.map(lambda co: Row(column1=co[0], column2=co[1],column3=co[2],))
df1 = sqlContext.createDataFrame(file1)
#create Dataframe file2
lines = sc.textFile(path_file_one)
parts = lines.map(lambda l: l.split(";"))
file2 = parts.map(lambda co: Row(columnf1=co[0], columnf2=co[1],columnf3=co[2],))
df1 = sqlContext.createDataFrame(file2)
def get_number_of_differences(df1, df2, columnIdFile1, columnIdFile2):
quatity = 0
filetxt1 = df1.alias("filetxt1")
filetxt2 = df2.alias("filetxt2")
df3 = filetxt2.join(filetxt1, col('filetxt1.'+columnIdFile1+'') == col('filetxt2.'+columnIdFile2+''), 'inner')
for cop,xp in itertools.izip(df1.columns,df2.columns):
diferenceResult=df3.filter(str("{0} != {1}".format(cop,xp))).count()
quatity += diferenceResult
files.write(str('\n In the columns file1: {0} file2 {1}, there are {2} differents. \n'.format(cop,xp,diferenceResult)))
return quatity
get_number_of_differences(df1, df2, 'column1', 'columnf1')