Skip to content

Commit 55a62ba

Browse files
author
Cheng Hao
committed
add schemardd & udf examples
1 parent cf6d0ee commit 55a62ba

File tree

2 files changed

+47
-0
lines changed

2 files changed

+47
-0
lines changed

schemardd.scala

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import org.apache.spark.sql.hive.HiveContext
2+
3+
case class KV(key: Int, value: String)
4+
5+
val kvRdd = sc.parallelize((1 to 100).map(i => KV(i, s"val_$i")))
6+
val hc = new HiveContext(sc)
7+
import hc._
8+
9+
kvRdd.where('key >= 1).saveAsParquetFile("/tmp/kv_parquet")
10+
kvRdd.where('key >= 1).where('key <=5).registerTempTable("kv_rdd")
11+
12+
parquetFile("/tmp/kv_parquet").registerTempTable("kv_parquet")
13+
14+
val result = sql("SELECT a.key, b.value, c.key from kv_rdd a join kv_parquet b join src c limit 20")
15+
16+
result.collect().foreach(row => {
17+
val f0 = if(row.isNullAt(0)) "null" else row.getInt(0)
18+
val f1 = if(row.isNullAt(1)) "null" else row.getString(1)
19+
val f2 = if(row.isNullAt(2)) "null" else row.getInt(2)
20+
println(s"result:$f0, $f1, $f2")
21+
})
22+

udf.scala

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import org.apache.spark.sql.hive.HiveContext
2+
import org.apache.spark.sql.SchemaRDD
3+
4+
case class KV(key: Int, value: String)
5+
6+
def printResult(result: SchemaRDD) {
7+
result.collect().foreach(row => {
8+
println (row.map { col => if (col == null) "null" else col.toString }.mkString(","))
9+
})
10+
}
11+
12+
val hc = new HiveContext(sc)
13+
import hc._
14+
15+
val kvRdd = sc.parallelize((1 to 100).map(i => KV(i, s"val_$i")))
16+
17+
val makeConcat = (a: Int, b: String) => s"$a => $b"
18+
import org.apache.spark.sql.catalyst.dsl._
19+
printResult(kvRdd.select('key, 'value, makeConcat.call('key, 'value)).limit(5))
20+
21+
registerFunction("MyConcat", makeConcat)
22+
kvRdd.registerTempTable("test")
23+
printResult(sql("SELECT key, value, MyConcat(key, value) from test limit 5"))
24+
25+

0 commit comments

Comments
 (0)