0

我是 R 和 Spark 的新手,但我正在尝试创建一个可扩展的 R 应用程序来检测用户执行的增加/减少查询。

我有一个 Spark DataFrame,其中包含以下格式的数据:

+-------+------------------------+-------------------------+
| user  |         query          |       query_time        |
+-------+------------------------+-------------------------+
| user1 | Hp tablet              | 2011-08-21T11:07:57.346 |
| user2 | Hp tablet              | 2011-08-21T22:22:32.599 |
| user3 | Hp tablet              | 2011-08-22T19:08:57.412 |
| user4 | hp laptop              | 2011-09-05T15:33:31.489 |
| user5 | Samsung LCD 550        | 2011-09-01T10:28:33.547 |
| user6 | memory stick           | 2011-09-06T17:15:42.852 |
| user7 | Castle                 | 2011-08-28T22:06:37.618 |
+-------+------------------------+-------------------------+

该数据集有数十万行。我需要能够以某种方式可视化,例如,“hp tablet”正在上升。

我查看了一些可以帮助我实现这一目标的库(例如Breakout DetectionAnomaly Detectionthis question),但我不知道它们是否与 Spark 配合得很好。如果他们这样做了,我找不到任何关于如何进行编程的例子。

我正在使用在 Zeppelin Notebook 上运行的 R 版本 3.4.0 和 SparkR 版本 2.1.0。

有没有人有任何想法?我也对任何其他方法持开放态度。谢谢!

4

2 回答 2

0
%r
#created a sparkR dataframe
df_query <- createDataFrame(sqlContext, data.frame(query = c("Hp tablet","Hp tablet","Hp tablet","hp laptop", "Samsung LCD 550 "), 
query_time = c("2011-08-21T11:07:57.346","2011-08-21T22:22:32.599","2011-08-22T19:08:57.412","2011-09-05T15:33:31.489","2011-09-01T10:28:33.547")))

#remove T as its not a timestamp format = "yyyy-MM-dd HH:mm:ss"
df_query_1 <- select(df_query, df_query$query, regexp_replace(df_query$query_time, '(T)', ' '))
+----------------+--------------------------------+
|           query|regexp_replace(query_time,(T), )|
+----------------+--------------------------------+
|       Hp tablet|            2011-08-21 11:07:...|
|       Hp tablet|            2011-08-21 22:22:...|
|       Hp tablet|            2011-08-22 19:08:...|
|       hp laptop|            2011-09-05 15:33:...|
|Samsung LCD 550 |            2011-09-01 10:28:...|
+----------------+--------------------------------+

df_query_1 <-  rename(df_query_1, query_time=df_query_1[[2]])

#registering temp table:
registerTempTable(df_query_1, "temp_query")

从上面创建的临时表可视化:

%sql
select * from temp_query

屏幕 1在此处输入图像描述

屏幕 2:可视化为条形图可视化为条形图

于 2017-06-06T07:38:19.260 回答
0

对于使用库(AnomalyDetection),数据应该是这种格式

head(raw_data)
                timestamp   count
14393 1980-10-05 13:53:00 149.801
14394 1980-10-05 13:54:00 151.492
14395 1980-10-05 13:55:00 151.724
14396 1980-10-05 13:56:00 153.776
14397 1980-10-05 13:57:00 150.481
14398 1980-10-05 13:58:00 146.638

如果您的 query_time 是 X 轴,您将如何用数字定义 Y 轴,以及所用时间是2011-08-21T11:07:57.346什么意思。需要更多说明T11:07:57.346

于 2017-06-07T05:26:51.983 回答