Python 2.7 在pyspark中逐个处理CSV文件

Python 2.7 在pyspark中逐个处理CSV文件,python-2.7,pyspark,Python 2.7,Pyspark,CSV文件放置在HDFS文件夹中。所有文件都具有相同的架构。我必须读取CSV文件并根据文件名创建分区。有没有办法读取Dataframe中的所有CSV文件并逐个处理 File name : file1_20200417123.csv Parition : year_month=202004 day=17 File name : file2_20190212208.csv Partition : year_month=201902 day=12 需要读取这两个文件并创建分区并将数据保存到相应的分

CSV文件放置在HDFS文件夹中。所有文件都具有相同的架构。我必须读取CSV文件并根据文件名创建分区。有没有办法读取Dataframe中的所有CSV文件并逐个处理

File name : file1_20200417123.csv
Parition : year_month=202004 day=17

File name : file2_20190212208.csv
Partition : year_month=201902 day=12

需要读取这两个文件并创建分区并将数据保存到相应的分区。

使用
spark.read.csv读取csv文件。

#sample data in csv directory

file1_20200417123.csv
file2_20190212208.csv

$cat * csv
id,name
1,"a"
id,name
2,"b"
  • 使用
    输入文件名()
    函数,我们可以获得每条记录的文件名
  • 使用
    \uuu
    拆分文件名并提取最后一个元素
  • 使用unixtime(unix\u timestamp)函数中的子字符串(或)日期格式(或),我们可以提取年、月、日,并将其作为列添加到数据框中

示例:

#sample data in csv directory

file1_20200417123.csv
file2_20190212208.csv

$cat * csv
id,name
1,"a"
id,name
2,"b"


使用spark.Read.csv读取csv文件

#sample data in csv directory

file1_20200417123.csv
file2_20190212208.csv

$cat * csv
id,name
1,"a"
id,name
2,"b"
  • 使用
    输入文件名()
    函数,我们可以获得每条记录的文件名
  • 使用
    \uuu
    拆分文件名并提取最后一个元素
  • 使用unixtime(unix\u timestamp)函数中的子字符串(或)日期格式(或),我们可以提取年、月、日,并将其作为列添加到数据框中

示例:

#sample data in csv directory

file1_20200417123.csv
file2_20190212208.csv

$cat * csv
id,name
1,"a"
id,name
2,"b"


看起来每个文件都包含来自不同时间范围的数据,这种假设正确吗?此外,数据中是否有与此假设同步的时间戳字段?@Bitswazsky文件名包含时间范围,它将同步。我现在已经编辑过了。我只需要从文件名中获取YYYYMMdd。看起来每个文件都包含来自不同时间范围的数据,这种假设是否正确?此外,数据中是否有与此假设同步的时间戳字段?@Bitswazsky文件名包含时间范围,它将同步。我现在已经编辑过了。我只需要从文件名中获取YYYYMMdd。