私のスパークストリーミングジョブは、圧縮されたXMLファイルを圧縮解除し、それをparquetファイルに文字列として追加します。 私のバッチジョブは、パーケットファイルを読み込みます。このファイルには、解凍されたxml文字列が1つだけ含まれています。寄木細工の列からXML文字列を抽出する方法
寄せ木ファイルスキーマ:
DF.printSchema()
ルート
| - 解凍:寄木細工のファイル内の文字列(真= NULL可能)
サンプルレコード
DF.show(1,False)
|decompress
------------------------------------------------+
|<Sale><ItemID >10</ItemID>......</Sale>
はです私はデータレンガXMLを適用することができます何らかの方法xml要素を抽出するためのパッケージ。 UDFを書く以外の選択肢はありますか?私は、UDFの処理に時間がかかることを考慮して、UDFを第2の選択肢として維持しています。
ありがとう、マリウス。ストリーミングジョブは、リアルタイムのレポート作成の目的で、圧縮されたXMLから特定の列を抽出する必要があります。私のバッチジョブは、下流システムのデータを準備する必要があります。バッチジョブは1日に1回実行されます。ストリーミングジョブでは、XMLファイルを解凍し、レポートに必要な列を抽出し、バッチ処理用のデータを準備しようとしています(バッチジョブでは完全なXMLコンテンツが必要です)。バッチ処理では、非常に小さなファイルを何千も持っていたくないので、各ストリームを別々のファイルに保存するのではなく、ファイルに追加しようとしています。 –
AFAIKでは、(ストリーミングジョブで)パーケットデータセットに追加しても、ディレクトリに小さなファイルが作成されます。スパークでは、簡単に寄木細工ファイルに追加することはできません。[SPARK-18199](https://issues.apache.org/jira/browse/SPARK-18199)を参照してください。書き込み方法を生テキストファイルに変更すると、バッチジョブで直接読み込むことができます。 – Mariusz