当我尝试将DStream [String]转换为Dataframes时,我遇到了问题。
我的目标是将twitter流[rdd]转换为数据帧,但是使用我的代码(如下),转换不起作用,最后我收到的数据帧只有一个字。
例如:嗨,每个人
我的数据框只包含单词" hi"
这里是代码片段
class LineReader extends require('events').EventEmitter{
constructor(f, delim='\n'){
super();
this.leftover = '';
f.on('data', (chunk)=>{
let lines = chunk.split(delim);
if (lines.length === 1){
this.leftover += chunk;
return;
}
lines[0] = this.leftover + lines[0];
this.leftover = lines[lines.length-1];
if (this.leftover)
lines.pop();
for (let l of lines)
this.emit('line', l);
});
}
}
答案 0 :(得分:1)
因为您使用了x.split(“”),所以只存储了第一个单词。
您创建了一个字段。
修改代码如下。
val splited_test=texts.transform(rdd => rdd.map(x=> Row.fromSeq(Seq(x))))