【问题标题】:Read a list of csv files from datalake and union them into a single pyspark dataframe从 datalake 读取 csv 文件列表并将它们合并到单个 pyspark 数据帧中
【发布时间】:2021-03-12 08:15:45
【问题描述】:

我正在尝试从 Azure 数据湖中逐个读取 csv 文件列表,经过一些检查后,我想将所有文件合并到一个数据帧中。

fileList = dbutils.fs.ls(file_input_path)

for i in fileList:
  try:
    file_path = i.path
    print(file_path)
      
  except Exception as e:
    raise Exception(str(e))

在这种情况下,我想使用自定义架构从 file_path 读取 csv,然后将所有内容合并到一个数据帧中。

我只能读取一个 csv,如下所示。如何读取每个 csv 并将它们合并为一个数据帧?

df = spark.read.csv(file_path, header = True, schema=custom_schema)

如何努力做到这一点?谢谢。

【问题讨论】:

  • 使用reduce 合并数据框列表:df = functools.reduce(DataFrame.union, df_list)

标签: pyspark union azure-data-lake pyspark-dataframes


【解决方案1】:

我设法阅读并结合如下。

fileList = dbutils.fs.ls(file_input_path)
output_df = spark.createDataFrame([],schema=custom_schema)

for i in fileList:
  try:
    file_path = i.path
    df = spark.read.csv(file_path, header=True, schema=custom_schema)
    output_df = output_df.union(df)
    
  except Exception as e:
    raise Exception(str(e))

【讨论】:

    猜你喜欢
    • 2022-10-12
    • 1970-01-01
    • 1970-01-01
    • 2015-02-03
    • 1970-01-01
    • 2021-10-28
    • 2020-07-28
    • 2020-12-21
    • 2017-02-15
    相关资源
    最近更新 更多