环境说明:
用的版本是Spark 2.1,Dataset操作很丰富,join的支持也蛮好的,比原来用的spark 1.4好用多了。
嗯,Dataset操作,我觉得最重要的是把Column类的用法弄清楚。毕竟,后面的Dataset操作都是在操作列。最好的资料自然是官方文档,Spark的API文档还是挺详细的,而且还细分了Java/Scala/Python。
来个例子边看边说:
scala> val df = spark.createDataset(Seq(
("aaa", 1, 2), ("bbb", 3, 4), ("ccc", 3, 5), ("bbb", 4, 6))
).toDF("key1","key2","key3")
df: org.apache.spark.sql.DataFrame = [key1: string, key2: int ... 1 more field]
scala> df.printSchema
root
|-- key1: string (nullable = true)
|-- key2: integer (nullable = false)
|-- key3: integer (nullable = false)
scala> df.collect
res34: Array[org.apache.spark.sql.Row] = Array([aaa,1,2], [bbb,3,4], [ccc,3,5], [bbb,4,6])
上面的代码创建了一个