我有一个没有任何字符分隔的文本文件,我想在特定位置分割它,以便将其转换为“数据框”。下面的file1.txt中的示例数据:
1JITENDER33
2VIRENDER28
3BIJENDER37
我想分割文件,以便位置0到1进入第一列,位置2到9进入第二列,位置10到11进入第三列,以便最终将其转换为spark dataframe
答案 0 :(得分:2)
您可以使用下面的python代码读取输入文件,并使用csv writer对其进行定界,然后可以将其读取到数据帧中或将其加载到配置单元外部表中。
vikrant> cat inputfile
1JITENDER33
2VIRENDER28
3BIJENDER37
import csv
fname_in = '/u/user/vikrant/inputfile'
fname_out = '/u/user/vikrant/outputfile.csv'
cols = [(0,1), (1,9), (9,11)]
with open(fname_in) as fin, open(fname_out, 'wt') as fout:
writer = csv.writer(fout, delimiter=",", lineterminator="\n")
for line in fin:
line = line.rstrip() # removing the '\n' and other trailing whitespaces
row = [] # init -- empty list
data = [line[c[0]:c[1]] for c in cols]
print("data:",data)
writer.writerow(data)
vikrant> cat outputfile.csv
1,JITENDER,33
2,VIRENDER,28
3,BIJENDER,37
您还可以将此代码作为某些python类的函数,然后将该类进一步导入pyspark应用程序代码,并将纯文本文件转换为某些csv文件格式。如果您需要更多帮助,请告诉我。