0

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

我有一个具有以下结构的 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,我希望它是string类型,但被视为long

我尝试设置的每个自定义模式都会导致一些内部错误,或者数据框中的 0 条记录。

请帮忙 :)

(Spark v. 2.0.0)

4

1 回答 1

-1

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

于 2017-01-26T10:14:46.833 回答