Как добавить Id для всех строк данных в спарк - PullRequest
0 голосов
/ 20 февраля 2019

Привет, моя структура файла 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 должен иметь значение 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

Я хочу сделать это, чтобы можно было идентифицировать строки по идентификатору файла, если я читаю несколько файлов CSV. Обратите внимание, что я не хочудобавьте имя файла в качестве идентификатора, я хочу использовать столбец идентификатора в первой строке файла, чтобы охватить все соответствующие строки файла в кадре данных.

1 Ответ

0 голосов
/ 20 февраля 2019

, если вы уверены, что он будет в первом ряду.Ниже приведен псевдокод.

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

, а затем используйте вычисленный выше идентификатор для файла как

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

. То же самое для второго кадра данных df_file2, затем выполните объединение

df_file = df_file1.unionAll(df_file2)
...