pyspark:如何将带有时间列的数据帧转换为火花流对象?

时间:2016-05-25 12:32:40

标签: python apache-spark pyspark spark-streaming

我们假设您有一个Spark数据帧 MySqlConnection connection = new MySqlConnection(MyCon); MySqlCommand cmd = new MySqlCommand("INSERT INTO favorite (favorite) VALUES (@favo)", connection); cmd.CommandType = CommandType.Text; cmd.Parameters.AddWithValue("@favo", combofavorite.Text); connection.Open(); cmd.ExecuteNonQuery(); private void cmbfav_SelectedIndexChanged(object sender, EventArgs e) { string ID = cmbfav.SelectedValue.ToString(); } ,其中using System.Linq; var result = guests.Where(guest => guest.FirstName.Equals("Test")); 列代表时间,让我们以unix-time格式表示(自1970年以来的秒数)。我如何使Spark.Streaming将此视为输入,以便我可以对数据进行滑动窗口? 谢谢!

1 个答案:

答案 0 :(得分:0)

你不能,或者至少不能以有意义的方式。虽然可以使用queueStream从RDD创建流,如下所示:

from pyspark.streaming import StreamingContext

ssc = StreamingContext(sc, 10)
df = sc.parallelize([(i, ) for i in range(10000)]).toDF(["ts"])
stream = ssc.queueStream([df.rdd])
stream.count().pprint()

ssc.start()
ssc.awaitTermination()

其中队列中批处理和对象之间的对应关系是1:1。不幸的是,与Scala版本不同,queueStream是一个静态流。创建新数据后,无法对其进行排队。这意味着您已将DataFrame手动拆分为多个RDD。