Обработка XML Pyspark - ошибка типов схем - PullRequest
0 голосов
/ 08 апреля 2019

Я обрабатываю большой XML-файл с использованием Spark XML Library (HyukjinKwon: spark-xml: 0.1.1-s_2.11).Обработка XML завершается сбоем с исключением анализа для нескольких записей.Я получаю Исключение Анализа для Выбора на Схеме с примерами записей ниже.

У меня есть код ниже для обработки xml и сгенерированной Схемы.Поскольку входной xml может иногда иметь выходные данные, как в примере 2, мой выбор для фрейма данных завершается с ошибкой Analysis.

Sample 1:- Works Fine

XML 1:
<AuthorList CompleteYN="Y"> 
                 <Author ValidYN="Y">
                    <LastName>H</LastName>
                    <ForeName>L</ForeName>
                    <Initials>L</Initials>
                    <AffiliationInfo>
                        <Affiliation>Aff1</Affiliation>
                    </AffiliationInfo>
                    <AffiliationInfo>
                        <Affiliation>Aff2</Affiliation>
                    </AffiliationInfo>
                </Author>               
</AuthorList>

Schema: 
root
 -- AuthorList: struct (nullable = true)
 |    |    |    |-- Author: struct (nullable = true)
 |    |    |    |    |-- AffiliationInfo: array (nullable = true)
 |    |    |    |    |    |-- element: struct (containsNull = true)
 |    |    |    |    |    |    |-- Affiliation: string (nullable = true)


Sample2:- Doesn't Work
XML 2:  
<AuthorList CompleteYN="Y"> 
                 <Author ValidYN="Y">
                    <LastName>H</LastName>
                    <ForeName>L</ForeName>
                    <Initials>L</Initials>
                    <AffiliationInfo>
                        <Affiliation>Aff1</Affiliation>
                    </AffiliationInfo>
                    <AffiliationInfo>
                        <Affiliation>Aff2</Affiliation>
                    </AffiliationInfo>
                </Author>       
                 <Author ValidYN="Y">
                    <LastName>H</LastName>
                    <ForeName>L</ForeName>
                    <Initials>L</Initials>
                    <AffiliationInfo>
                        <Affiliation>Aff4</Affiliation>
                    </AffiliationInfo>                   
                </Author>               
</AuthorList>

Schema: 

root
 |-- AuthorList: struct (nullable = true)
 |    |    |    |-- Author: array (nullable = true)
 |    |    |    |    |-- element: struct (containsNull = true)
 |    |    |    |    |    |-- AffiliationInfo: array (nullable = true)
 |    |    |    |    |    |    |-- element: struct (containsNull = true)
 |    |    |    |    |    |    |    |-- Affiliation: string (nullable = true)


Exception: AnalysisException: "cannot resolve '`AuthorList`.`Author`.`AffiliationInfo`['Affiliation']' due to data type mismatch: argument 2 requires integral type, however, ''Affiliation'' is of string type.;;

Я хотел бы создать / изменить схему, которая может поддерживать записи XML2.Не совсем уверен, что не так с созданной схемой.Цените входы.

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