将DStream转换为Dataframe时丢失的数据

时间:2017-03-17 22:11:58

标签: scala apache-spark twitter spark-streaming spark-dataframe

当我尝试将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);
        });
    }
}

1 个答案:

答案 0 :(得分:1)

因为您使用了x.split(“”),所以只存储了第一个单词。

您创建了一个字段。

修改代码如下。

val splited_test=texts.transform(rdd => rdd.map(x=> Row.fromSeq(Seq(x))))