Python 将二进制数据读入(py)spark数据帧

Python 将二进制数据读入(py)spark数据帧,python,apache-spark,apache-spark-sql,spark-dataframe,Python,Apache Spark,Apache Spark Sql,Spark Dataframe,我正在将一个二进制文件摄取到Spark中--文件结构很简单,它由一系列记录组成,每条记录都有若干个浮点数。目前,我正在python中以块的形式读取数据,然后遍历各个记录,将它们转换为Spark可以用来构造数据帧的行对象。这是非常低效的,因为它不需要在块中处理数据,而是需要我循环遍历各个元素 有没有一种明显的(首选的)方式来接收这样的数据?理想情况下,我将能够将文件的一块(比如10240条记录左右)读入缓冲区,指定模式并直接将其转换为DataFrame。我看不出用当前的API做这件事的方法,但也许

我正在将一个二进制文件摄取到Spark中--文件结构很简单,它由一系列记录组成,每条记录都有若干个浮点数。目前,我正在python中以块的形式读取数据,然后遍历各个记录,将它们转换为Spark可以用来构造
数据帧的
对象。这是非常低效的,因为它不需要在块中处理数据,而是需要我循环遍历各个元素

有没有一种明显的(首选的)方式来接收这样的数据?理想情况下,我将能够将文件的一块(比如10240条记录左右)读入缓冲区,指定模式并直接将其转换为
DataFrame
。我看不出用当前的API做这件事的方法,但也许我遗漏了什么

下面是一个演示当前过程的示例笔记本:


理想情况下,我可以在
read_batches
中去掉for循环
buf
,直接将整个批转换为
对象数组

您目前如何解码二进制数据?我假设您正在使用
struct
模块?我正在使用numpy结构化数组读取它。我定义数据类型,然后使用
np.fromstring
函数读取数组。数据是如何存储在文件中的?你能提供一个可复制的例子吗?一个输入文件的大小是多少?我手头没有一个小例子,但数据只是一个32位浮点序列如果没有例子,只需模拟一些数据并向我们展示如何访问它。您目前如何解码二进制数据?我假设您正在使用
struct
模块?我正在使用numpy结构化数组读取它。我定义数据类型,然后使用
np.fromstring
函数读取数组。数据是如何存储在文件中的?你能提供一个可复制的例子吗?一个输入文件的大小是多少?我手头没有一个小例子,但是数据只是一个32位浮点序列如果没有例子,就模拟一些数据,告诉我们如何访问它。