九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Spark的Dataset操作(一)

環(huán)境說明:

用的版本是Spark 2.1,Dataset操作很豐富,join的支持也蠻好的,比原來用的spark 1.4好用多了。

嗯,Dataset操作,我覺得最重要的是把Column類的用法弄清楚。畢竟,后面的Dataset操作都是在操作列。最好的資料自然是官方文檔,Spark的API文檔還是挺詳細(xì)的,而且還細(xì)分了Java/Scala/Python。

來個(gè)例子邊看邊說:

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.printSchemaroot |-- key1: string (nullable = true) |-- key2: integer (nullable = false) |-- key3: integer (nullable = false)scala> df.collectres34: Array[org.apache.spark.sql.Row] = Array([aaa,1,2], [bbb,3,4], [ccc,3,5], [bbb,4,6])


上面的代碼創(chuàng)建了一個(gè)DataFrame,有三列,列名分別是key1, key2, key3, 類型對(duì)應(yīng)string, integer, integer。
當(dāng)前造了4條記錄,如上所示。

接下來看看選擇列的幾種調(diào)用方式:

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方法中參數(shù)直接用字符串只能用DataFrame中的命名字段名。不能對(duì)字段名再使用像SQL的select語法的表達(dá)式。但是$'key1'這種寫法對(duì)應(yīng)的是select方法的Column參數(shù)類型重載,可以支持sql的select語法了:

scala> df.select(upper($'key1')).collectres58: Array[org.apache.spark.sql.Row] = Array([AAA], [BBB], [CCC], [BBB])scala> df.select(upper('key1')).collect<console>:27: error: type mismatch; found   : String('key1') required: org.apache.spark.sql.Column       df.select(upper('key1')).collect


上面在select中對(duì)字段key1調(diào)用了upper函數(shù)轉(zhuǎn)換大小寫,注意'key1'前面有個(gè)$符號(hào),這個(gè)是scala最喜歡搞的語法糖,了解下寫代碼會(huì)很方便。而下面沒有加$符號(hào)在key1前面時(shí)就報(bào)錯(cuò)了,提示需要的是Column,而當(dāng)前給的則是個(gè)String類型。

這時(shí)候的select也可以用selectExtr方法替換。比如下面的調(diào)用:

scala> df.selectExpr('upper(key1)', 'key2 as haha2').show+-----------+-----+|upper(key1)|haha2|+-----------+-----+| AAA| 1|| BBB| 3|| CCC| 3|| BBB| 4|+-----------+-----+


key1字段調(diào)用了變大寫的函數(shù),而key2字段改了別名haha2, ok, 一切順利!


嗯,先寫到這吧,困了。。?;仡^再接著寫~~

喜歡這些內(nèi)容的話,可以關(guān)注下哈~
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Apache 兩個(gè)開源項(xiàng)目比較:Flink vs Spark
SparkSession簡(jiǎn)單介紹
理解Spark SQL(三)—— Spark SQL程序舉例
大數(shù)據(jù)IMF傳奇行動(dòng)絕密課程第58課:使用Java和Scala在IDE中開發(fā)DataFrame實(shí)戰(zhàn)
Spark入門:讀寫Parquet(DataFrame)
理解Spark SQL(二)—— SQLContext和HiveContext
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服