elasticsearch,apache-spark-sql,rdd,Dataframe,Apache Spark,elasticsearch,Apache Spark Sql,Rdd" /> elasticsearch,apache-spark-sql,rdd,Dataframe,Apache Spark,elasticsearch,Apache Spark Sql,Rdd" />

Dataframe 使用Elasticsearch中的Pyspark平均数据点

Dataframe 使用Elasticsearch中的Pyspark平均数据点,dataframe,apache-spark,elasticsearch,apache-spark-sql,rdd,Dataframe,Apache Spark,elasticsearch,Apache Spark Sql,Rdd,我有以下结构的RDD: {'Bytes': 30213, 'SentBytes': 142, 'ResponseCode': '200', 'ResponseTime': 1, 'ConnectTime': 0, 'SampleLabel': 'data/30000', 'Timestamp': 1593715514000, 'Latency': 1} 转换为DF时,如下所示: +-----+-----------+-------+------------+------------+-----

我有以下结构的RDD:

{'Bytes': 30213, 'SentBytes': 142, 'ResponseCode': '200', 'ResponseTime': 1, 'ConnectTime': 0, 'SampleLabel': 'data/30000', 'Timestamp': 1593715514000, 'Latency': 1}
转换为DF时,如下所示:

+-----+-----------+-------+------------+------------+---------------+---------+-------------+
|Bytes|ConnectTime|Latency|ResponseCode|ResponseTime|    SampleLabel|SentBytes|    Timestamp|
+-----+-----------+-------+------------+------------+---------------+---------+-------------+
|30213|          0|      1|         200|           1|     data/30000|      142|1593715514000|
|51422|          0|      2|         200|           2|data/random_50K|      147|1593715514000|
|55829|          0|      2|         200|           2|  data/kiwi.jpg|      140|1593715514000|
|55829|          0|      2|         200|           2|  data/kiwi.jpg|      140|1593715514001|
|43525|          0|      3|         200|           3|   data/bus.jpg|      139|1593715514001|
|43910|          0|      4|         200|           4|   data/bus.jpg|      140|1593715514001|
|65744|          0|      3|         200|           6|data/random_64K|      142|1593715514000|
|43525|          0|      4|         200|           6|   data/bus.jpg|      139|1593715514000|
|65749|          0|      4|         200|           6|data/random_64K|      147|1593715514001|
|65744|          0|      2|         200|           2|data/random_64K|      142|1593715514000|
|11512|          0|      3|         200|           3|data/flower.jpg|      142|1593715514001|
|43525|          1|      5|         200|           6|   data/bus.jpg|      139|1593715514001|
|65744|          0|      1|         200|           1|data/random_64K|      142|1593715514000|
|30213|          0|      2|         200|           2|     data/30000|      142|1593715514000|
|65744|          0|      2|         200|           2|data/random_64K|      142|1593715514000|
|43525|          0|      2|         200|           2|   data/bus.jpg|      139|1593715514000|
|65744|          0|      2|         200|           2|data/random_64K|      142|1593715514000|
|11512|          0|      2|         200|           2|data/flower.jpg|      142|1593715514000|
|30213|          0|      2|         200|           2|     data/30000|      142|1593715514001|
|55829|          0|      2|         200|           2|  data/kiwi.jpg|      140|1593715514001|
+-----+-----------+-------+------------+------------+---------------+---------+-------------+
我的任务是根据SampleLabel每秒平均数据点。请注意,时间戳字段以毫秒为单位

+-------------+---------------+------------+------------------+------------------+------------------+------------------+------------------+
|    Timestamp|    SampleLabel|ResponseCode|    avg(SentBytes)| avg(ResponseTime)|        avg(Bytes)|  avg(ConnectTime)|      avg(Latency)|
+-------------+---------------+------------+------------------+------------------+------------------+------------------+------------------+
|1593715514000|     data/30000|         200|             142.0|               1.5|           30213.0|               0.0|               1.5|
|1593715514001|     data/30000|         200|             142.0|               2.0|           30213.0|               0.0|               2.0|
|1593715514000|   data/bus.jpg|         200|139.33333333333334| 5.666666666666667|43653.333333333336|               0.0| 4.333333333333333|
|1593715514001|   data/bus.jpg|         200|             139.5|               5.5|           43717.5|0.3333333333333333| 4.833333333333333|
|1593715514000|data/flower.jpg|         200|             142.0|               2.0|           11512.0|               0.0|               2.0|
|1593715514001|data/flower.jpg|         200|             142.0|               4.0|           11512.0|               0.0|               4.0|
|1593715514000|  data/kiwi.jpg|         200|             140.0|               3.5|           55829.0|               0.0|               3.0|
|1593715514001|  data/kiwi.jpg|         200|             140.0|2.6666666666666665|           55829.0|               0.0|2.3333333333333335|
我有以下一段代码将RDD转换为DF并处理数据点:

df = es_rdd.toDF()
df = df.groupby("Timestamp", "SampleLabel", "ResponseCode").avg("SentBytes", "ResponseTime", "Bytes", "ConnectTime", "Latency").where(col("ResponseCode") == "200")
结果如下,但请注意时间戳仍以毫秒为单位

+-------------+---------------+------------+------------------+------------------+------------------+------------------+------------------+
|    Timestamp|    SampleLabel|ResponseCode|    avg(SentBytes)| avg(ResponseTime)|        avg(Bytes)|  avg(ConnectTime)|      avg(Latency)|
+-------------+---------------+------------+------------------+------------------+------------------+------------------+------------------+
|1593715514000|     data/30000|         200|             142.0|               1.5|           30213.0|               0.0|               1.5|
|1593715514001|     data/30000|         200|             142.0|               2.0|           30213.0|               0.0|               2.0|
|1593715514000|   data/bus.jpg|         200|139.33333333333334| 5.666666666666667|43653.333333333336|               0.0| 4.333333333333333|
|1593715514001|   data/bus.jpg|         200|             139.5|               5.5|           43717.5|0.3333333333333333| 4.833333333333333|
|1593715514000|data/flower.jpg|         200|             142.0|               2.0|           11512.0|               0.0|               2.0|
|1593715514001|data/flower.jpg|         200|             142.0|               4.0|           11512.0|               0.0|               4.0|
|1593715514000|  data/kiwi.jpg|         200|             140.0|               3.5|           55829.0|               0.0|               3.0|
|1593715514001|  data/kiwi.jpg|         200|             140.0|2.6666666666666665|           55829.0|               0.0|2.3333333333333335|
但是,这对于RDD中的大量记录来说是低效的,而且非常耗时。 如果能以更快的速度实现这一目标,我将不胜感激