Apache Spark (私は PySpark を使用しています) でファイルを読み取る場合、各行にキーが必要です。例えばこんな感じ
key1, timestamp1, value1
key2, timestamp2, value2
key1, timestamp3, value3
key1, timestamp4, value4
次に、キーによって削減されます
key1 {{timestamp1, value1}, {timestamp3, value3}, {timestamp4, value4}}
key2 {{timestamp2, value2}}
HDFS から読み取るときにファイルがどの行で分割されるかがわからず、各行にキーがあると map-reduce の使用に役立つため、これがベスト プラクティスです。しかし、私の入力ファイルは異なって見えます:
key1
timestamp1, value1
timestamp3, value3
-------- split --------
timestamp4, value4
key2
timestamp2, value2
...
問題は、HDFS がランダムな場所でファイルを分割する可能性があるため、Apache Hadoop Spark クラスターの 2 番目のノードがファイルの 2 番目の部分を読み取るときに、それがkey1に属していることを知らずに{timestamp4, value4} で始まることです。
その問題を解決する方法はありますか?クラスターに入る前に、ローカル マシンで入力ファイルを別の形式に変換することは避けたいと思います。
たぶんカスタムファイルスプリッターを使用していますか?Python 2.7 (Pyspark) で解決策を探しています。
ヒントをありがとう!