SQL操作は、SQLスパーク - BasicSQLTesttを

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()
  } 
}

  

おすすめ

転載: www.cnblogs.com/tesla-turing/p/11489111.html