如何将ID添加到spark中数据框的所有行

时间:2019-02-20 15:55:12

标签: apache-spark apache-spark-sql apache-spark-dataset

嗨,我的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文件加载到数据帧中时,该文件1的所有行的id列应具有值1,文件2的所有行均应具有值2。因此,我的datframe应该看起来像-

    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

我想这样做,所以我在读取多个csv文件时可以按文件ID标识行。请注意,我不想将文件名添加为ID,我想在文件的第一行中使用ID列扩展到数据框中文件的所有相应行。

1 个答案:

答案 0 :(得分:-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)