0

それぞれのレコードにMarc21バイナリ形式の特定のレコードが含まれているファイルセットがあります。私はRDDとしてファイルのセットを取り込みたいと思います。各要素はバイナリデータとしてレコードオブジェクトになります。その後、Marcライブラリを使用してオブジェクトをJava Objectに変換して処理します。バイナリファイルをSparkに読み込む

今のところ、私はバイナリファイルをどのように読むことができるのか困惑しています。

binaryRecord(path: string, recordLength: int, conf) 

しかし、それは同じ長さの複数のレコードを持つファイルであることを前提としています

私は次の関数を見てきました。私の記録は確かに異なるサイズのものになるでしょう。各ファイルの横に別ファイルがあります。

これを回避する手段はありますか?どのように私は各ファイルのために、長さを与えることができますか?唯一の方法は、私のファイルの長さを計算し、その後、レコードを読むことですか?

私が見ている他の解決策は、Java形式のレコードを読んで、それをどんなフォーマットでも快適に取り込むことです。

お知らせください。

答えて

0

sparkからsc.binaryFiles()を試しましたか?ここで

は私がすべてでHDFSを使用していないこの時点でドキュメント https://spark.apache.org/docs/2.1.1/api/java/org/apache/spark/SparkContext.html#binaryFiles(java.lang.String,%20int)

+0

へのリンクです。私はHDFSなしで地元で働いています。将来私はカフカから読むことを知っています。他のものではカフカで摂取され、スパークはそれから消費されます。しかし、今はちょうどいくつかのテストをしたいです。それはHDFSなしで動作することができますか? – MaatDeamon

+0

はい。 sc.binaryFiles( "file:/// path/to/local/file")が動作するはずです。 – user5262448

+0

Thxはい私はそれがHadoopと互換性がなければならないと理解していた – MaatDeamon

関連する問題