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

一:环境搭建

1.JAVA环境搭建

其中重要的就是两个安装路径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
2.SCALA环境搭建

下载后,解压即可。配置一个环境变量即可。

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

    验证方法:scala -version
3.hadoop环境搭建
    下载后,解压即可。配置两个环境变量即可。

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

    其中需要将bin下面的东西替换成window版本,因为是window版本。上面链接中的已经替换过。        
4.运行的jar包
spark 解压的路径中jars目录中的东西,添加进IDE的classpath就行了
5.IDE解压开就行
打开后新建一个scala项目。和JAVA的IDE操作一模一样,在此不详细描述。
6.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()               固定方法,我也不知道为什么。尴尬,尴尬,尴尬

    代码中有一个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就是简单的查询
posted @   Kotlin  阅读(2316)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
Live2D
点击右上角即可分享
微信分享提示
西雅图
14:14发布
西雅图
14:14发布
4°
东南风
2级
空气质量
相对湿度
92%
今天
3°/12°
周四
4°/11°
周五
2°/10°