2017-01-26 35 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"/> 

我的目標是閱讀放入一個Spark(Pyspark)DataFrame以稍後處理。

我正在使用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記錄。

請幫助:)

(星火訴2.0.0)

回答

0

OK ...找到合適的方式來設置的模式,因此將XML解析proparely。一些小的語法問題。如果您有興趣或有類似問題,請發表評論,我會在這裏發表意見。