У меня есть Spark DataFrame следующим образом:
# ---------------------------------
# - column 1 - ... - column 5 -
# ---------------------------------
# - ... - Array of paths
Столбцы с 1 по 4 содержат строки, а пятый столбец содержит список строк, которые на самом деле являются путями к CSV-файлам, которые я хочу прочитать как Spark Dataframes. Я не могу найти, чтобы прочитать их. Вот упрощенная версия с одним столбцом и столбцом со списком путей:
from pyspark.sql import SparkSession,Row
spark = SparkSession \
.builder \
.appName('test') \
.getOrCreate()
simpleRDD = spark.sparkContext.parallelize(range(10))
simpleRDD = simpleRDD.map(lambda x: Row(**{'a':x,'paths':['{}_{}.csv'.format(y**2,y+1) for y in range(x+1)]}))
simpleDF = spark.createDataFrame(simpleRDD)
print(simpleDF.head(5))
Это дает:
[Row(a=0, paths=['0_1.csv']),
Row(a=1, paths=['0_1.csv', '1_2.csv']),
Row(a=2, paths=['0_1.csv', '1_2.csv', '4_3.csv']),
Row(a=3, paths=['0_1.csv', '1_2.csv', '4_3.csv', '9_4.csv']),
Row(a=4, paths=['0_1.csv', '1_2.csv', '4_3.csv', '9_4.csv', '16_5.csv'])]
Я бы тогда хотел сделать что-то вроде этого:
simpleDF = simpleDF.withColumn('data',spark.read.csv(simpleDF.paths))
... но это, конечно, не работает.