sparksql系列(一)環境搭建及helloworld詳解


以前公司用的是spark-core,但是換工作后用的多是spark-sql。
最近學習了很多spark-sql,在此做一個有spark經驗的sparksql快速入門的教程。
JDK安裝包 1.8版本:https://pan.baidu.com/s/1pLW3jyKv3N_FhQ7vvE4U2g    
SCALA安裝包:https://pan.baidu.com/s/17f8AiS2n_g5kiQhxf7XIlA
hadoop安裝包:https://pan.baidu.com/s/1YNM2_eTV8Zf_2SxamfMrSQ
Spark安裝包:https://pan.baidu.com/s/17mf2_DMiNy7OdlFwygekhg
IDE安裝包:https://pan.baidu.com/s/1caaKufvSuHBX1xEFXvCwPw

一:JDK環境搭建

其中重要的就是兩個安裝路徑JDK路徑和JRE路徑,三個環境變量:JAVA_HOME、PATH、CLASSPATH

我本地的是   JDK路徑(D:\JAVA\JDK\)      JRE路徑(D:\JAVA\JRE)     

JAVA_HOME(D:\JAVA\JDK)   

PATH(%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;)  

CLASSPATH(.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;)

驗證方案:java -version

二:SCALA環境搭建

下載后,解壓即可。配置一個環境變量即可。

重要環境變量,加上即可:SCALA_HOME(D:\JAVA\scala)      PATH(%SCALA_HOME%\bin;%SCALA_HOME%\jre\bin;)  

驗證方法:scala -version

三:hadoop環境搭建

    下載后,解壓即可。配置兩個環境變量即可。

    HADOOP_HOME(D:\JAVA\hadoop)      PATH($HADOOP_HOME/bin;)

    其中需要將bin下面的東西替換成window版本,因為是window版本。上面鏈接中的已經替換過。        

四:運行的jar包

    spark 解壓的路徑中jars目錄中的東西,添加進IDE的classpath就行了

五:IDE解壓開就行

    打開后新建一個scala項目。和JAVA的IDE操作一模一樣,在此不詳細描述。

六:sparksql 你好,世界

   spark 解壓的路徑中jars目錄中的東西,添加進IDE的classpath

            import java.util.Arrays
            import org.apache.spark.SparkConf
            import org.apache.spark.api.java.JavaSparkContext
            import org.apache.spark.sql.{DataFrame, Row, SparkSession, functions}
   import org.apache.spark.sql.functions.{col, desc, length, row_number, trim, when}
   import org.apache.spark.sql.functions.{countDistinct,sum,count,avg}
            import org.apache.spark.sql.types.{LongType, StringType, StructField, StructType}
            import org.apache.spark.sql.expressions.Window
            import org.apache.spark.storage.StorageLevel
            import org.apache.spark.sql.SaveMode

            object WordCount {
                        def main(args: Array[String]): Unit = {
                                    val sparkSession= SparkSession.builder().master("local").appName("AppName").getOrCreate()
                                    val javasc = new JavaSparkContext(sparkSession.sparkContext)

                                    val nameRDD = javasc.parallelize(Arrays.asList("{'name':'wangwu','age':'18','vip':'t'}",
                                                "{'name':'sunliu','age':'19','vip':'t'}","{'name':'zhangsan','age':'20','vip':'f'}"));
                                    val namedf = sparkSession.read.json(nameRDD)

                                    namedf.select(col("name")).show(100)

                        }
            }

hello,world詳解

        sparkSession的作用就相當於sparkcontext,是操作數據的關鍵

  SparkSession.builder()        java工廠模式哈

  master("local")                      限制模式是本地模式

  appName("AppName")       填寫自己app的名稱,免得任務多的時候找不到自己的任務

  getOrCreate()                       固定方法,我也不知道為什么。尷尬,尷尬,尷尬

上線sparksession的初始化

           怎么?sparksession的初始化還分本地模式和線上模式嗎?

     不,只是上一段代碼中有一個master參數是local,這個參數的意思是本地模式。真正上線時不能用這個,需要去掉。

   val sparkSession= SparkSession.builder().appName("AppName").getOrCreate()

JavaSparkContext、nameRDD、namedf、select

  javaSparkContext                其實沒有什么卵用就是將json轉換成rdd

  namedf                                  rdd轉換成的Dataframe,其實和spark-core中的rdd是一個概念。將json串轉換為一個sparksql表了。

  select                                     Dataframe所有的操作和SQL是一樣的,select就是簡單的查詢

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM