scala踩坑日記

2021-10-23 18:32:13 字數 1817 閱讀 5850

統計踩坑日記:

1.同乙個包,同乙個類下面的方法可以直接呼叫,例項:

def stat (statdate : string):dataset[row] =

def newstat(stat:string):dataset[row] =

2.scala可以向python一樣優美,不需要各種呼叫,各種巢狀

例項:val df1 = session.sql(s"......")

df1.createtempview("df1")

val df2 = session.sql(s"select ...... from df1")

df2.createtempview("df2")

val df2 = session.sql(s"select ...... from df2")

以此類推。。。。

3.scala使用sql傳值很簡單,但有一點小彎彎繞繞

例如:val df1 = session.sql("select * from tempview where dt = $'dt'")

很遺憾,scala並不支援這樣傳值哦

正確做法是:

import session.implicits._

val df1 = session.sql(s"select * from tempview where dt = '$'")

隱式轉換和's' 和'{}'是必須的。

4.聚合函式禁止「套娃」

val df = df1.agg.sum(expr(sum()))

畫個大叉,但支援

val df2 = df1.agg(sum(expr("")) as ...)

val df3 = df2.agg(sum(expr("")) as ...)

6.方法一呼叫方法二,這倆方法別寫太遠,否則全文找還找不到就很難受
7.多嘗試使用withcolumn方法,不用多次建立dataframe

例項:val df = df1.withcolumn("重新命名",lit(原欄位.function))

8.sparksql使用聚合函式和groupby有點神奇的地方,有個first別忘了加

例項:val df1 = sql("select distinct first(orgno),first(tgno),first(tgid),first(dt),sum(case when error > 0 then 1 else 0 end) as error_cnt from temp group by tgno,dt")

不寫會報這樣的錯

org.apache.spark.sql.analysi***ception: expression 'temp.`orgno`' is neither present in the group by, nor is it an aggregate function. add to group by or wrap in first() (or first_value) if you don't care which value you get.;;

9.有時候找不到**錯了,不如想想有沒有可能是**少了個**的return
10.細心,做大資料的一跑程式幾小時,沒那麼多次機會給你重來
11.如果有改**的需求,不用強求和原作者的風格一致,你可以按照自己的風格來,記得寫好注釋,防止後面人看不懂。

React Native 踩坑日記

問題 於示圖 findpage title 發現 解決辦法 react native 中無論是 tabbarios.item 還是 tabbar.item 必須有且只有乙個元件,說白了就是需要有子元件的存在,並且只存在乙個子元件。findpage title 發現 onpress selected ...

arcgis 踩坑日記

專案組決定用arcgis做地圖服務的時候我還是有些小期待的,因為以前沒弄過,我對所有不熟悉的技能都感興趣,於是有了一條踩坑之路,加班踩坑,小問題踩兩天坑,等等.先談一下自己的體會吧,arcgis for js 我真的沒覺得多難,上手就用,不會就查,官網例項太全了,我覺得坑多的地方是在arcgis m...

Supervisor 踩坑日記

安裝 supervisor 後,編輯好 etc supervisor conf.d conf發現啟動都成問題 報錯 supervisor.service failed with result exit code 經過我個人的多次解除安裝再重安裝的經驗來看,pip3安裝是為了能夠讓 superviso...