如何在Apache Spark中关联文件中的数据字符串

时间:2018-06-22 15:00:25

标签: apache-spark apache-spark-sql

我是Spark的新手,我试图了解它是否适​​合我的用例。

我有以下情况。 我有一个文件(可以是日志文件,.txt,.csv,.xml或.json,我可以 以一些我喜欢的格式生成数据),例如: 事件“ X”,城市“ Y”,区域“ Z”

具有不同的事件,城市和区域。该数据可以表示为 .txt中的字符串(例如我写的字符串),或者是XML,CSV或JSON 希望。如果需要,我也可以通过TCP套接字发送此数据。

我真正想做的是将每个单个条目与其他条目相关联 通过声明规则进行类似的输入。 例如,我想对数据流声明一些规则:如果收到 在同一城市和同一区域中的事件X1和事件X2,我想做点什么 (执行.bat脚本,写入日志文件等)。如果我收到了 相同的字符串多次,或我想用这些规则产生的任何规则 数据字符串。 我试图了解Apache Spark是否适合我的用例。唯一的输入 数据将是此文件中的这些字符串。

我可以关联这些事件以及如何关联?是否有GUI可以做到?

任何提示和建议将不胜感激。

1 个答案:

答案 0 :(得分:1)

是的,它可以:

spark.read.csv("your_file")
  .groupBy($"Y", $"Z")
  .agg(collect_list($"X").as("events"))
  .as[(String, String, Seq[String])]
  .filter(r => r._3.contains("X1") && r._3.contains("X2"))
  .foreach(r => {
    //do something with the relevant records
  })

真的没有GUI可以说,除非您将笔记本型软件视为GUI,否则您将以任何一种方式编写代码。

Apache Spark非常强大,但是有一些学习上的困难。在本地模式下开始学习很容易,但是除非您的数据大小要求您扩展到多个节点,否则您将不会获得性能上的好处。