私はパンダのコードを(py)Sparkに移植しようとしています。残念ながら、バイナリデータを読み込んでSpark Dataframeに入れたい入力部分では既に失敗しています。hdfsからバイナリファイルをSparkデータフレームに読み込むにはどうすればよいですか?
これまでのところ私はnumpyのからfromfile
使用しています:
dt = np.dtype([('val1', '<i4'),('val2','<i4'),('val3','<i4'),('val4','f8')])
data = np.fromfile('binary_file.bin', dtype=dt)
data=data[1:] #throw away header
df_bin = pd.DataFrame(data, columns=data.dtype.names)
をしかし、スパークのために、私はそれを行う方法を見つけることができませんでした。私の回避策はバイナリファイルの代わりにcsv-Filesを使うことでしたが、それは理想的な解決策ではありません。私はnumpyのfromfile
をsparkに使用すべきではないことを認識しています。 すでにhdfsにロードされているバイナリファイルを読み込むにはどうすればよいですか?
私は
fileRDD=sc.parallelize(['hdfs:///user/bin_file1.bin','hdfs:///user/bin_file2.bin])
fileRDD.map(lambda x: ???)
ような何かをしようとしたが、それは私にNo such file or directory
エラーを与えています。
私はこの質問を見た: spark in python: creating an rdd by loading binary data with numpy.fromfile しかし、それはドライバノードのホームにファイルが保存されている場合にのみ動作します。
fs.defaultFSはnameservice1言うが、また、 'HDFSと、以下のように定義することができ:// nameservice1:8020/user/bin_file1.bin'まだファイルが見つかりません。エラーです。 地図に載せた機能とリンクすることはできますか? 'DEF read_bin: をFとしてオープン( "myfileの"、 "RB")で:! バイト= f.read(1) しばらくバイト= "": バイト= f.read(1)' – WilliamEllisWebb
れていますあなたは "ファイルが見つかりませんでした"というエラーメッセージが表示されますか?どのように "read_bin"関数を使用する予定ですか?オープンメソッドはHDFSで動作しないようです.... – Yaron
エラーは、read_binの2行目にあります。あなたが正しいです、オープンメソッドはHDFSを好きではありません。私は 'sc.textfile(filename).map(lambda line:line.split( '、'))と似たものを探しています。map(lambda x:(int [x] ....) ' – WilliamEllisWebb