从XML源读取自定义模式错误

时间:2017-01-26 08:36:53

标签: pyspark spark-dataframe databricks

似乎是一个非常简单的问题,但非常烦人..

我有一个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模式(自动驱动)如下:

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条记录。

请帮助:)

(Spark v.2.0.0)

1 个答案:

答案 0 :(得分:-1)

确定...找到了设置架构的适当方法,以便可以正确地解析XML。一些小的语法问题。如果您有兴趣或有类似问题,请发表评论,我会在这里发表。