最近引起我注意的一个有趣且充满希望的开源项目是Spline ,它是由Absa维护的Apache Spark的数据沿袭跟踪和可视化工具。 该项目由两部分组成:一个在驱动程序上工作的Scala库,该驱动程序通过分析Spark执行计划来捕获数据沿袭,并提供一个Web应用程序以提供一个可视化它们的UI。
Spline支持MongoDB和HDFS作为JSON格式的数据沿袭的存储系统。 在这篇文章中,我指的是MongoDB。
您可以通过Spark外壳开始使用Spline。 只需将必需的依赖项添加到shell类路径中,如下所示(参考此项目的最新0.3.5版本):
spark-shell --packages "za.co.absa.spline:spline-core:0.3.5,za.co.absa.spline:spline-persistence-mongo:0.3.5,za.co.absa.spline:spline-core-spark-adapter-2.3:0.3.5"
在Ubuntu和其他Linux发行版上使用上述命令运行Spark shell,是否应该出现有关下载Joda Time库(Spline组件之一的传递依赖项)的问题,请删除.ivy1和.m2隐藏子目录执行了spark-shell命令的目录,然后重新运行它。
假设您已启动并运行Mongo服务器,并且已经为Spline创建了一个空数据库,那么在Spark Shell中需要做的第一件事是指定要使用的持久性工厂类,然后指定连接字符串和数据库名称:
System.setProperty("spline.persistence.factory", "za.co.absa.spline.persistence.mongo.MongoPersistenceFactory")
System.setProperty("spline.mongodb.url", "mongodb://<username>:<password>@<server_name_or_ip>:<port>")
System.setProperty("spline.mongodb.name", "<database_name>")
现在,您可以启用样条线数据沿袭跟踪:
import za.co.absa.spline.core.SparkLineageInitializer._
spark.enableLineageTracking()
然后开始做一些涉及数据的事情:
val employeesJson =
spark.read.json("/home/guglielmo/spark-2.3.2-bin-hadoop2.7/examples/src/main/resources/employees.json")
import spark.implicits._val employeeNames = employeesJson.select(employeesJson("name")) employeeNames.write.parquet("/home/guglielmo/spline/example/employee_names")
是否应该发生以下异常:
com.mongodb.MongoCommandException: Command failed with error 9: 'The 'cursor' option is required, except for aggregate with the explain argument' on server localhost:27017. The full response is { "ok" : 0.0, "errmsg" : "The 'cursor' option is required, except for aggregate with the explain argument", "code" : 9, "codeName" : "FailedToParse" }
那么您必须将MongoDB Java驱动程序依赖项更新到任何3.6+版本(可以通过在运行Windows Server 2003时简单地将其添加到软件包列表中来完成)
spark-shell命令)。
启动Spline Web应用程序:
java -jar spline-web-0.3.5-exec-war.jar -Dspline.mongodb.url=mongodb://<username>:<password>@<server_name_or_ip>:<port> -Dspline.mongodb.name=<database_name>?
您可以在Web UI中查看捕获的数据沿袭(默认监听端口为8080):
这只是一个开始。 在本系列的第2部分中,我们将深入探讨Spline。
翻译自: https://www.javacodegeeks.com/2018/12/spline-data-trackervisualization-spark.html