【发布时间】:2016-03-17 21:53:40
【问题描述】:
首先,让我在spark上的.scala文件中编写我要执行的部分代码。
这是我的源文件。它有四个字段的结构化数据
val inputFile = sc.textFile("hdfs://Hadoop1:9000/user/hduser/test.csv")
我已经声明了一个案例类来将文件中的数据存储到具有四列的表中
case class Table1(srcIp: String, destIp: String, srcPrt: Int, destPrt: Int)
val inputValue = inputFile.map(_.split(",")).map(p => Table1(p(0),p(1),p(2).trim.toInt,p(3).trim.toInt)).toDF()
inputValue.registerTempTable("inputValue")
现在,假设我想运行以下两个查询。我如何并行运行这些查询,因为它们是相互独立的。我觉得,如果我可以并行运行它们,它可以减少执行时间。现在,它们是串行执行的。
val primaryDestValues = sqlContext.sql("SELECT distinct destIp FROM inputValue")
primaryDestValues.registerTempTable("primaryDestValues")
val primarySrcValues = sqlContext.sql("SELECT distinct srcIp FROM inputValue")
primarySrcValues.registerTempTable("primarySrcValues")
primaryDestValues.join(primarySrcValues, $"destIp" === $"srcIp").select($"destIp",$"srcIp").show(
【问题讨论】:
标签: scala apache-spark apache-spark-sql spark-dataframe