使用pyspark解析文本文件以在特定位置拆分

时间:2018-12-27 06:35:33

标签: pyspark rdd

我有一个没有任何字符分隔的文本文件,我想在特定位置分割它,以便将其转换为“数据框”。下面的file1.txt中的示例数据:

1JITENDER33
2VIRENDER28
3BIJENDER37

我想分割文件,以便位置0到1进入第一列,位置2到9进入第二列,位置10到11进入第三列,以便最终将其转换为spark dataframe

1 个答案:

答案 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文件格式。如果您需要更多帮助,请告诉我。