各行にキーがなくTSV(表形式の区切り値)表記のテキストファイルをロードしています。したがって、ある行は特定の変数を示し、次の行はすべて、その変数が新しい変数になるまでの値です。 PySpark(Python 2.7):SparkContext.newAPIHadoopFile経由で複数行レコードをロードする
は、したがって、私は、カスタム区切り文字を使用してファイルをロードしています(JupyterノートブックのPython 2.7で - Pyspark):sheet = sc.newAPIHadoopFile(
'sample.txt',
'org.apache.hadoop.mapreduce.lib.input.TextInputFormat',
'org.apache.hadoop.io.LongWritable',
'org.apache.hadoop.io.Text',
conf={'textinputformat.record.delimiter': ’var::'}
)
私の質問は、どのような複数行のレコードのサイズは? 1つの変数の値は、何千もの行になる可能性があります。 Sparkは1台のマシンでファイルを一度にロードするか、ブロックを分割して小さなブロック(チャンク)に分割して処理しますか?
メモリが処理ノードで爆発していないことを確認します。すべての説明をありがとう。
170MBのファイルには、「時間」と全体で5.252.874行で始まる50の複数行レコードが含まれています。したがって、1レコードには約106.000行があります。それを単一のブロックとして読むのは良い考えではないかもしれません。もう1つのオプションは、すべてのファイルを読み込み、 "Time"が発生した行番号を覚えておき、その情報を使用して後でファイルを再読み込みして、キータイムスタンプ値の3倍を構築することです。 – Matthias
以前と同じアプリですか? – zero323
確かに。しかし、私は小さなサンプルでテストしていました。実際のデータはファイルごとに約70〜170MBです。 – Matthias