BasicSQLTest {オブジェクト デフメイン(引数を:配列[文字列]):単位= { ヴァルスパーク= SparkSessionの .builder() .appName( "BasicSQLTest") .getOrCreate() ヴァルsessionDf = spark.read.parquet(S "$ {BASE_PATH } / trackerSession ") sessionDf.printSchema() sessionDf.createOrReplaceTempView(" trackerSession ") //查询所有记录 ヴァルsessionRecords = spark.sql(" "trackerSession SELECT * FROM) sessionRecords.show() //过滤 ヴァルfilterSession = 火花。 ( "trackerSession cookie_label = '固执'は異なる選択(クッキー)")SQL filterSession.show() //先に参加、然后再分组SQL ヴァルlogDf = spark.read.parquet(S "$ {BASE_PATH} / trackerLog") logDf.printSchema() logDf.createOrReplaceTempView( "trackerLog") ヴァルのSQL = "" "tl.urlを選択し、trackerLog TLから(*)カウントtl.cookie = ts.cookieにtrackerSession TSを参加 ところts.cookie_label = '固执'とtl.log_type = 'ページビュー' | | tl.urlによってグループ | tl.urlのDESCによって順 .stripMargin「 "" spark.sql( (SQL).SHOW偽) //函数(内置函数) //单行函数 spark.sql( "session_server_timeを選択し、" + "trackerSessionから1時間の時間(session_server_time)")。ショー(偽) spark.sql(」選択click_count、cookie_label、 "+ "連結trackerSessionからCのような(click_count、cookie_label)")。ショー() //多行函数(聚合函数) ヴァルccmDF = spark.sql( "MAX(click_countを選択)trackerSessionからCCMとして") ccmDF.printSchema() ccmDF.show() ショー() //実行 spark.udf.register( "MYUDF"、(ARG1:INT、ARG2:文字列)=> { IF(ARG1> 1 && arg2.equals( "固执")){ ARG2 + ARG1 }他{ ARG2 + "以下" } }) spark.sql( "選択click_count、cookie_label、MYUDF(click_count、cookie_label)" + "としてtrackerSessionからC")。ショー() spark.stop() } }