【发布时间】:2016-09-21 16:52:52
【问题描述】:
我正在尝试将一些代码从 pandas 移植到 (py)Spark。不幸的是,我已经在输入部分失败了,我想在其中读取二进制数据并将其放入 Spark Dataframe 中。
到目前为止,我正在使用来自 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)
但是对于 Spark,我找不到如何去做。到目前为止,我的解决方法是使用 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 但这仅在我将文件存储在驱动程序节点的主目录中时才有效。
【问题讨论】:
标签: python hadoop numpy apache-spark spark-dataframe