非常に単純な問題のように思えますが、非常に厄介です..
次の構造の 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)