pyspark一次读取多个csv文件

s71maibg  于 2023-02-03  发布在  Spark
关注(0)|答案(2)|浏览(366)

我正在使用SPARK读取hdfs文件。有一个场景,我们从遗留系统中获取csv格式的文件块。

ID1_FILENAMEA_1.csv
ID1_FILENAMEA_2.csv
ID1_FILENAMEA_3.csv
ID1_FILENAMEA_4.csv
ID2_FILENAMEA_1.csv
ID2_FILENAMEA_2.csv
ID2_FILENAMEA_3.csv

这些文件是使用HiveWareHouse连接器加载到HIVE中的FILENAMEA中的,只需要很少的转换,比如添加默认值。同样,我们有大约70个表。Hive表是以ORC格式创建的。表是按ID分区的。现在,我正在逐个处理所有这些文件。这需要很多时间。
我想让这个过程更快。文件将在GB。
是否有办法同时读取所有FILENAMEA文件并将其加载到HIVE表中。

uqjltbpv

uqjltbpv1#

在pyspark中有两种方法可以读取多个CSV文件,如果所有的CSV文件都在同一个目录下,并且都有相同的schema,可以直接将目录的路径作为参数传递,一次读取多个CSV文件,如下所示:

spark.read.csv('hdfs://path/to/directory')

如果CSV文件在不同的位置,或者CSV文件在同一个目录中,但有其他CSV/文本文件,您可以将它们作为.csv()方法参数中表示路径列表的字符串传递,如下所示:

spark.read.csv('hdfs://path/to/filename1,hdfs://path/to/filename2')

您可以获得有关如何使用Spark here读取CSV文件的详细信息
如果需要从HDFS目录中的文件列表构建此路径列表,可以查看this answer。创建路径列表后,可以将其转换为字符串,以通过','.join(your_file_list)传递给.csv()方法

tzdcorbm

tzdcorbm2#

使用:spark.read.csv(["path1","path2","path3"...])可以从不同的路径读取多个文件,但这意味着您必须首先创建一个路径列表,该列表不是逗号分隔的文件路径字符串

相关问题