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

Posted

技术标签:

【中文标题】pyspark 遍历 hdfs 目录并将数据加载到多个表中【英文标题】:pyspark iterate over a hdfs directory and load data into multiple tables 【发布时间】:2020-11-06 07:08:06 【问题描述】:

我在 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)

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

【问题讨论】:

您的问题是什么?你已经完成了你想要达到的目标。 ***.com/questions/35750614/… 【参考方案1】:

您可以使用 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)
    

【讨论】:

谢谢。 csv 文件位于 hdfs 目录中。 很高兴看到它对您有所帮助。如果解决方案对您有帮助,请您帮忙接受和投票。将不胜感激【参考方案2】:

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

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

【讨论】:

以上是关于pyspark 遍历 hdfs 目录并将数据加载到多个表中的主要内容,如果未能解决你的问题,请参考以下文章

Pyspark:获取HDFS路径上的文件/目录列表

使用 pyspark 更改分隔符并将其保存为 HDFS 中的文本文件

pySpark加载数据

在 pyspark 中使用 zip

PySpark HDFS 数据流读/写

Pyspark:从不同的目录加载类似的镶木地板,并将文件夹名称作为一列组合成一个 DataFrame [重复]