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 目录并将数据加载到多个表中的主要内容,如果未能解决你的问题,请参考以下文章