我正在使用scala编写spark程序。
我有一个Dataframe,包含3列: ID、Time和RawHexdata。我有一个用户定义的函数,它将RawHexData扩展为X个新列。需要说明的是,对于每一行,X是相同的(列不变)。但是,在接收到第一条数据之前,我不知道这些列的内容。但是,一旦我得到了表头,我就可以推断出来。
我想要一个第二个Dataframe,包含以下列:Id、Time、RawHexData、NewCol1、...、NewCol3。
我能想到的“最简单”的方法是: 1. 将每一行反序列化为json(每种数据类型都可以在这里进行序列化) 2. 添加我的新列, 3. 从修改后的json中反序列化一个新的Dataframe,
然而,这似乎是一种浪费,因为它涉及到2个昂贵且冗余的json序列化步骤。我正在寻找一种更清晰的模式。
使用case类似乎是一个坏主意,因为我事先不知道列数或列名。
我有一个Dataframe,包含3列: ID、Time和RawHexdata。我有一个用户定义的函数,它将RawHexData扩展为X个新列。需要说明的是,对于每一行,X是相同的(列不变)。但是,在接收到第一条数据之前,我不知道这些列的内容。但是,一旦我得到了表头,我就可以推断出来。
我想要一个第二个Dataframe,包含以下列:Id、Time、RawHexData、NewCol1、...、NewCol3。
我能想到的“最简单”的方法是: 1. 将每一行反序列化为json(每种数据类型都可以在这里进行序列化) 2. 添加我的新列, 3. 从修改后的json中反序列化一个新的Dataframe,
然而,这似乎是一种浪费,因为它涉及到2个昂贵且冗余的json序列化步骤。我正在寻找一种更清晰的模式。
使用case类似乎是一个坏主意,因为我事先不知道列数或列名。
RawHexdata
中包含的数据。 - zero323.withColumn()
函数。 - TheMP