2017-01-26 1 views
0

кажется очень простой вопрос, но очень раздражает ..чтения из источника XML с помощью пользовательских ошибок схемы

У меня есть файл XML со следующей структурой:

<A attr1="Str1" attr2="Long1"> 
    <B attr3="Str1" attr4="Str2" attr5="Long1"/> 
    <B attr3="Str1" attr4="Str2" attr5="Long1"/> 
    .... 
    <B attr3="Str1" attr4="Str1" attr5="Integer1"/> 

Моя цель читать в DataFrame Spark (Pyspark), чтобы обработать его позже.

Я использую пакет Databricks. Когда я запускаю следующий код:

df = sqlContext.read.format('com.databricks.spark.xml') \ 

        .option('rowTag','A') \ 
        .option('attributePrefix','att_') \ 
        .load('s3a://path.to.my.xml') 

полученного в результате DF по схеме (авто infered) заключается в следующем:

root 
|-- A: array (nullable=true) 
    |-- element: struct (containsNull=true) 
      |-- _VALUE: string(nullable=true) 
      |-- att_attr3: string(nullable=true) 
      |-- att_attr4: long(nullable=true) 
      |-- att_attr5: long(nullable=true) 
|-- att_attr1: string(nullable=true) 
|-- att_attr2: long(nullable=true) 

Проблема заключается в attr4 в этом случае, что я ожидаю быть типа строка, но обрабатывается как длинный.

Каждую пользовательскую схему, которую я пытался установить, приводил к некоторой внутренней ошибке или 0 записей в dataframe.

Пожалуйста, помогите :)

(Спарк v. 2.0.0)

ответ

0

ОК ... нашли подходящий способ установить схему таким образом, XML будет проанализирован proparely. Некоторые незначительные проблемы синтаксиса. Если вы заинтересованы или имеете схожую проблему, прокомментируйте, и я буду ее здесь.

Смежные вопросы