我的文件夹中包含超过100000个“ csv”文件。不幸的是,这些csvs的格式不正确,因此我必须删除大约80行的Header。
应用架构,然后
("mode", "DROPMALFORMED")
并添加4个新列,
df = df.withColumn ("blabla", lit (blabla))
我从文件名中提取新列的信息。
到目前为止,一切都很好。
但是,在我首先从“文件夹”创建的链接列表中:
hdfs:// server :: 42 / projects / banana / live / csv1id4.csv
hdfs:// server :: 42 / projects / banana / live / csv2id5.csv
hdfs:// server :: 42 / projects / banana / live / csv3id6.csv
...
hdfs:// server :: 42 / projects / banana / live / csv100000id8484848.csv
我想在每个链接上调用一个函数:
将csv文件作为数据帧读取
创建4个新列,并将内容从文件Name中拖出
,并将创建的dataFrame写入实木复合地板文件
(df.write.mode('append').parquet('hdfs:///projects/parquet
)
显然,对于“对于每个“链接” do循环”来说,所有这一切都不并行
还尝试保存到rdd的链接列表,并执行类似的操作:
rdd.map(Lambda x: doFunction(x))
有人有想法或提示吗?
非常感谢您!