как изменить схему dataframe? - PullRequest
       5

как изменить схему dataframe?

0 голосов
/ 03 октября 2018

Я работаю с фреймом данных df, он содержит Column массив multi_type [struct], double ... Я хочу изменить schema фрейма данных: существующий schema:

        root
    |-- _id: long (nullable = true)
    |-- d: array (nullable = true)
    |    |-- element: struct (containsNull = true)
    |    |    |-- col1: struct (nullable = false)
    |    |    |    |-- col1: struct (nullable = false)
    |    |    |    |    |-- value: string (nullable = true)
    |    |    |    |    |-- type: string (nullable = false)
    |    |    |-- resource: string (nullable = true)
    |    |    |-- cri: string (nullable = true)
    |-- d2: array (nullable = true)
    |    |-- element: struct (containsNull = true)
    |    |    |-- col1: struct (nullable = false)
    |    |    |    |-- col1: struct (nullable = false)
    |    |    |    |    |-- value: string (nullable = true)
    |    |    |    |    |-- type: string (nullable = false)
    |    |    |-- resource: string (nullable = true)
    |    |    |-- cri: string (nullable = true)
    |-- d4: array (nullable = true)
    |    |-- element: struct (containsNull = true)
    |    |    |-- col1: struct (nullable = false)
    |    |    |    |-- value: string (nullable = true)
    |    |    |    |-- type: string (nullable = false)
    |    |    |-- value: string (nullable = true)
    |    |    |-- vn: double (nullable = true)

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

       root
    |-- context_id: long (nullable = true)
    |-- data: array (nullable = true)
    |    |-- element: struct (containsNull = true)
    |    |    |-- col1: struct (nullable = false)
    |    |    |    |-- col1: struct (nullable = false)
    |    |    |    |    |-- value: string (nullable = true)
    |    |    |    |    |-- type: string (nullable = false)
    |    |    |-- resource: string (nullable = true)
    |    |    |-- cri: string (nullable = true)
    |    |-- element: struct (containsNull = true)
    |    |    |-- col1: struct (nullable = false)
    |    |    |    |-- col1: struct (nullable = false)
    |    |    |    |    |-- value: string (nullable = true)
    |    |    |    |    |-- type: string (nullable = false)
    |    |    |-- resource: string (nullable = true)
    |    |    |-- cri: string (nullable = true)
    |    |-- element: struct (containsNull = true)
    |    |    |-- col1: struct (nullable = false)
    |    |    |    |-- value: string (nullable = true)
    |    |    |    |-- type: string (nullable = false)
    |    |    |-- value: string (nullable = true)
    |    |    |-- vn: double (nullable = true)

Я пытался сделать это с spark SQL, но, как описано, схема содержит сложную схему, также я пытался создать udfна concat три массива, но это не удалось, потому что udf не поддерживает wrappedarray[structType] и Sql[Row] ... любые предложения, пожалуйста

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...