小编Wil*_*ebb的帖子

如何将二进制文件从 hdfs 读入 Spark 数据帧?

我正在尝试将一些代码从 Pandas 移植到 (py)Spark。不幸的是,我已经在输入部分失败了,我想在其中读取二进制数据并将其放入 Spark Dataframe。

到目前为止,我正在使用fromfilenumpy:

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)
Run Code Online (Sandbox Code Playgroud)

但是对于 Spark,我找不到如何去做。到目前为止,我的解决方法是使用 csv-Files 而不是二进制文件,但这不是理想的解决方案。我知道我不应该将 numpyfromfile与 spark 一起使用。如何读取已加载到 hdfs 中的二进制文件?

我试过类似的东西

fileRDD=sc.parallelize(['hdfs:///user/bin_file1.bin','hdfs:///user/bin_file2.bin])
fileRDD.map(lambda x: ???)
Run Code Online (Sandbox Code Playgroud)

但它给了我一个No such file or directory错误。

我见过这个问题: spark in python: create an rdd by loading binary data with numpy.fromfile 但这只适用于我将文件存储在驱动程序节点的家中。

python hadoop numpy apache-spark spark-dataframe

6
推荐指数
1
解决办法
1万
查看次数

对列名进行分组/取消堆叠

我有一个具有以下结构的数据框

    idx  value  Formula_name
0   123456789     100     Frequency No4
1   123456789     150     Frequency No25
2   123456789     125     Frequency No27
3   123456789     0.2     Power Level No4
4   123456789     0.5     Power Level No25
5   123456789     -1.0    Power Level No27
6   123456789     32      SNR  No4
7   123456789     35      SNR  No25
8   123456789     37      SNR  No27
9   111222333     ...
Run Code Online (Sandbox Code Playgroud)

因此,将频率与其相应的度量相关联的唯一方法是通过频率的编号。我知道可能的范围(从 100 到 200 MHz,步长为 25 MHz),但不知道数据中显示了哪些频率(或多少个),也不知道使用哪个“数字”将频率与度量相关联。

我想得到一个类似的数据框:

                  SNR                        Power Level
    idx           100   125  150   175  200  100  125  150 175 200
0   123456789     32 …
Run Code Online (Sandbox Code Playgroud)

python pandas

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

python ×2

apache-spark ×1

hadoop ×1

numpy ×1

pandas ×1

spark-dataframe ×1