如何将Id添加到spark中的所有数据帧行

问题描述 投票:1回答:1

嗨,我的csv文件结构就像

File-1

    id col1 col2
    a_1  sd    fd
       ds    emd
       sf    jhk

File-2

    id col1 col2
    b_2  sd    fd
       ds    emd
       sf    jhk

现在我希望当我将我的csv文件加载到数据帧时,我的id列为该文件的所有行1应该具有值1和文件2值2.所以我的数据帧应该看起来像 -

    id  col1  col2
    a_1  sd    fd
    a_1  ds    emd
    a_1  sf    jhk
    b_2  sd    fd
    b_2  ds    emd
    b_2  sf    jhk

我想这样做,所以我可以通过文件ID识别行,如果我正在读取多个csv文件。请注意我不想添加文件名作为id,我想使用文件第一行中的id列扩展到数据框中所有相应的文件行。

apache-spark apache-spark-sql apache-spark-dataset
1个回答
-1
投票

如果你确定它是否会在第一行。下面是伪代码。

file1_id = df_file1.filter(id != None).select(col('id')).collect()[0]

然后使用上面计算的文件ID作为

df_file1.drop('id').withColumn('id',lit(file1_id))

对第二个数据帧df_file2执行相同操作,然后执行联合

df_file = df_file1.unionAll(df_file2)
© www.soinside.com 2019 - 2024. All rights reserved.