私はsparkで180.000以上のxmlsを読み込み、それぞれの解析プロセスを開始して、最終的にcsvファイルをテーブルとして取得します。 これらのxmlはbz2ファイルで圧縮されています。 私はこのbz2: の2つのバージョンがあり、1つに連結されたxmls(それぞれ30mb)と1つのxmlsが含まれていることを知っています。 問題がsparkでxmlファイルの非常に大きなデータセットを読む
sc.textFile(hdfs_input_path).persist(pyspark.StorageLevel.MEMORY_AND_DISK)
連結XMLバージョンを読み取るために、次のコードを使用してと
sc.newAPIHadoopFile(path, "org.apache.hadoop.mapreduce.lib.input.TextInputFormat", "org.apache.hadoop.io.LongWritable", "org.apache.hadoop.io.Text", conf={"textinputformat.record.delimiter": '\n\n'}).map(lambda num_line: num_line[1])
とjava.io.IOException: Too many bytes before newline
rethemを持つ単一のXMLSバージョンを読み込むときに、私は、エラーをエグゼキュータが迷子ということです
sc.newAPIHadoopFile(path, "org.apache.hadoop.mapreduce.lib.input.TextInputFormat", "org.apache.hadoop.io.LongWritable", "org.apache.hadoop.io.Text", conf={"textinputformat.record.delimiter": '</delimiter>'}).map(lambda num_line: num_line[1])
それだけでxmlファイルの数時々作品近似的に180.000ほど大きすぎるわけではありません。
私の質問は、bz2圧縮ファイル形式で上記の作業をどのように達成できますか? (Gzipは分割可能ではありません...) bz2で圧縮を忘れてしまいましょう、これを行う別の方法はありますか? 283.20ギガバイトの物理メモリと42 VCoresと私は自分の問題を解決し
180.000のxmlファイルがありますか?各ファイルは30MBですか?あなたは一括してバッチをロードし、各バッチを処理しようとすることができます –
@ NarendraParmar入力が生のXMLファイルです。出力として私はハイブの11のテーブルに対応する11の.csvファイルを持っています。 – sdikby