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