Для использования решения распределенного pyspark не существует аналогичного способа добавить разделитель прямо во время чтения (как pandas). Масштабируемым способом решения этой проблемы будет чтение данных как есть в одном столбце, а затем использование приведенного ниже кода (с использованием функций pyspark) для создания ваших столбцов.
Создание примера кадра данных:
from pyspark.sql import functions as F
from pyspark.sql.types import *
list=[['USDINRFUTCUR23Feb201700000000FF00000000000001990067895000000000NNN*12'],
['USDINRFUTCUR24Feb201700000000FF00000000000001990067895000000000NNN*12'],
['USDINRFUTCUR25Feb201700000000FF00000000000001990067895000000000NNN*12']]
df=spark.createDataFrame(list,['col1'])
df.show(truncate=False)
+---------------------------------------------------------------------+
|col1 |
+---------------------------------------------------------------------+
|USDINRFUTCUR23Feb201700000000FF00000000000001990067895000000000NNN*12|
|USDINRFUTCUR24Feb201700000000FF00000000000001990067895000000000NNN*12|
|USDINRFUTCUR25Feb201700000000FF00000000000001990067895000000000NNN*12|
+---------------------------------------------------------------------+
Используйте substr и withcolumn , чтобы создать новые столбцы, и отбросьте первый. Вы можете создать def (функцию), которая также читает и выполняет этот код, чтобы вы могли повторно использовать и упростить ваш конвейер
df.withColumn("Currency1", F.col("col1").substr(0,3))\
.withColumn("Currency2", F.col("col1").substr(4,3))\
.withColumn("Type", F.col("col1").substr(7,6))\
.withColumn("Time", F.expr("""substr(col1,13,length(col1))"""))\
.drop("col1").show(truncate=False)
#output
+---------+---------+------+---------------------------------------------------------+
|Currency1|Currency2|Type |Time |
+---------+---------+------+---------------------------------------------------------+
|USD |INR |FUTCUR|23Feb201700000000FF00000000000001990067895000000000NNN*12|
|USD |INR |FUTCUR|24Feb201700000000FF00000000000001990067895000000000NNN*12|
|USD |INR |FUTCUR|25Feb201700000000FF00000000000001990067895000000000NNN*12|
+---------+---------+------+---------------------------------------------------------+