环境说明: 用的版本是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.select('key1').collectres49: Array[org.apache.spark.sql.Row] = Array([aaa], [bbb], [ccc], [bbb])scala> df.select($'key1').collectres50: Array[org.apache.spark.sql.Row] = Array([aaa], [bbb], [ccc], [bbb])scala> df.select(df.col('key1')).collectres51: Array[org.apache.spark.sql.Row] = Array([aaa], [bbb], [ccc], [bbb])
这时候的select也可以用selectExtr方法替换。比如下面的调用: scala> df.selectExpr('upper(key1)', 'key2 as haha2').show+-----------+-----+|upper(key1)|haha2|+-----------+-----+| AAA| 1|| BBB| 3|| CCC| 3|| BBB| 4|+-----------+-----+
|
|
来自: 佬总图书馆 > 《区块链、物联网、虚拟数字货币》