pyspark遍历hdfs目录并将数据加载到多个表中

时间:2020-11-06 07:08:06

标签: python dataframe pyspark hive pyspark-dataframes

我在hdfs的hdfs目录中有多个csv文件:

/project/project_csv/file1.csv
/project/project_csv/file2.csv
/project/project_csv/file3.csv

现在,在我的pyspark程序中,我想基于文件数量遍历路径,并且每次都想将数据存储到数据帧中并将数据加载到特定表中。

Like:
With the first file1.csv read to df and save to table1:

df = spark.read(file1.csv)
df.write.mode('overwrite').format('hive').saveAsTable(data_base.table_name1)

With the second file2.csv read to df and save to table2:

df = spark.read(file2.csv)
df.write.mode('overwrite').format('hive').saveAsTable(data_base.table_name2)

以同样的方式,要遍历多个文件并将数据保存到不同的表中。

2 个答案:

答案 0 :(得分:0)

您可以使用 glob() 遍历特定文件夹中的所有文件,并使用条件来执行以下特定于文件的操作。

* in order to loop through all the files/folder
.csv only to consider all csv files in that folder



 import glob
    files = glob.glob(r"C:\Users\path\*.csv")
    for i in files:
        if i.endswith("file1.csv"):
            df = spark.read(file1.csv)
            df.write.mode('overwrite').format('hive').saveAsTable(data_base.table_name1)
    

答案 1 :(得分:0)

我想您想问的是如何在Python的HDFS目录中列出文件。您可以使用HdfsCLI软件包:

from hdfs import Config
client = Config().get_client('dev')
files = client.list('/path')