In [1]:
import org.apache.spark.sql.SQLContext
import org.apache.spark.{SparkConf, SparkContext}
val sqlContext = new SQLContext(sc)
import sqlContext.implicits._

In [2]:
case class Point(name: String, x: Double, y: Double)

In [3]:
val points = sc.textFile("/opt/points.txt").map(_.split(",")).map(p => Point(p(0), p(1).trim().toDouble, p(2).trim().toDouble))

In [4]:
points.collect().foreach(println)


Point(A,1.0,1.0)
Point(B,2.0,2.0)
Point(C,3.0,3.0)
Point(D,4.0,4.0)
Point(E,5.0,5.0)
Point(F,6.0,6.0)
Point(G,7.0,7.0)

In [5]:
val pointsDF = points.toDF()

In [6]:
pointsDF.registerTempTable("points")

In [7]:
sqlContext.sql("SELECT * FROM points").toDF().collect().foreach(println)


[A,1.0,1.0]
[B,2.0,2.0]
[C,3.0,3.0]
[D,4.0,4.0]
[E,5.0,5.0]
[F,6.0,6.0]
[G,7.0,7.0]

In [8]:
val sql = "SELECT * FROM points WHERE POINT(x, y) IN CIRCLERANGE(POINT(4.5, 4.5), 2)"

In [9]:
sqlContext.sql(sql).toDF().collect().foreach(println)


[D,4.0,4.0]
[E,5.0,5.0]

In [ ]: