2017-01-26 21 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。一些小的语法问题。如果您有兴趣或有类似问题,请发表评论,我会在这里发表意见。