从Spark中带有不同标头的多个csv文件创建一个数据帧

时间:2019-01-16 14:49:12

标签: python apache-spark pyspark

在Spark中,使用Pyspark,我想创建一个数据框(该路径实际上是S3中的文件夹),其中包含具有公共列和不同列的多个csv文件。 简单地说,我只想从多个具有不同标题的csv文件中获取一个数据框。

我可以有一个标题为“ raw_id,title,civility”的文件,以及另一个文件为“ raw_id,first_name,civility”的文件。

这是我在python 3中的代码:

df = spark.read.load(
    s3_bucket + 'data/contacts/normalized' + '/*/*/*/*',
    format = 'csv',
    delimiter = '|',
    encoding = 'utf-8',
    header = 'true',
    quote = ''
)

这是file_1.csv的示例:

|raw_id|title|civility|
|1     |M    |male    |

还有file2.csv的示例:

|raw_id|first_name|civility|
|2     |Tom       |male    |

我期望在数据框中得到的结果是:

|raw_id|first_name|title|civility|
|1     |          |M    |male    |
|2     |Tom       |     |male    |

但是,正在发生的事情是我拥有所有统一的列,但是数据在第一个文件之后不在正确的位置。 你知道怎么做吗?

非常感谢您。

1 个答案:

答案 0 :(得分:0)

您需要将它们各自加载到不同的数据框中,然后将它们在raw_id列上结合在一起。