似乎是一个非常简单的问题,但很烦人..
我有一个具有以下结构的 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)