精华内容
下载资源
问答
  • Spark零基础思维导图(内含spark-core ,spark-streaming,spark-sql)
  • Spark零基础思维导图(内含spark-core ,spark-streaming,spark-sql),总结的很全面。 Spark零基础思维导图(内含spark-core ,spark-streaming,spark-sql)。 Spark零基础思维导图(内含spark-core ,spark-streaming,...
  • mastring-spark-sql

    2018-05-27 15:59:50
    关于spark-sql的英文文档,详细介绍了spark-sql的使用
  • 背景介绍 在日常工作中,我们可以在一个shell脚本里面利用spark-sql -e执行sql脚本,而且可以传参数,但是存在一个问题,shell脚本对格式要求严格,而且shell脚本和spark-sql的脚本混在一起,内容庞大凌乱,不好管理...

    背景介绍

    在日常工作中,我们可以在一个shell脚本里面利用spark-sql -e执行sql脚本,而且可以传参数,但是存在一个问题,shell脚本对格式要求严格,而且shell脚本和spark-sql的脚本混在一起,内容庞大凌乱,不好管理。而spark-sql -f可以执行一个hql文件,但是不能传参数进去,这就引出了一个问题,有没有一种方法,既可以把shell和hql脚本分开,shell负责调度hql脚本,并且可以在shell中把参数传递到hql中,hql脚本文件只负责写hql。

    sparkF功能开发的思路

    开发一个sparkF的功能,用法同spark-sql -f,但支持传参,使用格式:

    • sparkF aa.sql
    • sparkF aa.sql -date 2015-01-02
    • sparkF aa.sql -date 2015-01-02 -date1 2015-01-03

    其中,aa.sql里通过${date}的方式对接替换为想传递的参数值。

    sparkF开发思路

    最终的使用方式,sparkF aa.sql -date 2015-01-02

    • 开发一个Java应用程序读出aa.sql内容存入一个String变量里。
    • 把里面的${date}替换为2015-01-02,并System.out.println出来。
    • 在shell脚本里,用str接收System.out.println的输出,执行spark-sql -e $str
    1cd /export/project
    2mkdir bin
    3cd bin
    4touch sparkF
    

    难点,把Java程序的输出结果直接放到shell脚本里运行

    例如,运行sparkF aa.sql -date 2015-01-02

    首先,Java运行jar,把参数传进来,shell脚本里$*接收参数。参数是哪里传的呢?哪里传给sparkF的呢?是shell脚本aa.sh传过来的,sparkF ./aa.sql -dt $yestoday,交给java来处理,把sql脚本里的占位参数替换为传递的参数值后,打印的str由cmd来接收,再用spark-sql -e执行。

    1#!/bin/sh
    2. /etc/profile
    3cmd=`java -jar /export/project/lib/SparkF.jar $*`
    4echo $cmd
    5spark-sql -e "$cmd" -i /export/project/bin/init.hql
    

    /export/project/lib/sparkF.jar,路径可以不写死,可以给它配一个环境变量。

    /export/project/bin/init.hql,作为一个公共的UDF文件,在sparkF中通过spark-sql -i /export/project/bin/init.hql调用,在-e执行之前,用-i进行初始化。

    1chmod +x hiveF
    
    1# 加入环境变量
    2vi /etc/profile
    3export PATH=$PATH:/export/project/bin
    4source /etc/profile
    

    添加maven插件,打包SparkF.jar。

     1<plugin>
     2    <artifactId>maven-assembly-plugin</artifactId>
     3    <configuration>
     4        <descriptorRefs>
     5            <descriptorRef>jar-with-dependencies</descriptorRef>
     6        </descriptorRefs>
     7        <archive>
     8            <manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
     9        </archive>
    10    </configuration>
    11    <executions>
    12        <execution>
    13            <id>make-assembly</id>
    14            <phase>package</phase>
    15            <goals>
    16                <goal>single</goal>
    17            </goals>
    18        </execution>
    19    </executions>
    20</plugin>
    

    执行验证结果,

    1sh /export/project/fct_session_info/fct_session_info.sh 2015-08-28
    

    spark-sql日常作业开发流程

    sparkF aa.hql -date 2015-01-02为例,

    在aa.hql脚本中编写业务逻辑处理脚本,如果有参数,假设参数是dt,在脚本中用{dt}占位符代替(取决于开发SparkF.jar时的定义),然后通过aa.sh调度aa.hql,如sh aa.sh $yestoday,并且在aa.sh中利用我们开发的sparkF的功能,如sparkF ./aa.hql -dt $yestoday

    这样,可以实现hql业务处理逻辑和shell脚本分离,并且可以把自定义的UDF统一放在一个hql文件中统一管理,在sparkF命令中通过spark -i init.hql统一引用。如:

    1add jar /export/project/lib/hive_udf.jar ;
    2create temporary function GetActID as 'com.padluo.hive.udf.GetActID';
    

    本文首发于steem,感谢阅读,转载请注明。

    https://steemit.com/@padluo


    微信公众号「padluo」,分享数据科学家的自我修养,既然遇见,不如一起成长。



    读者交流电报群

    https://t.me/sspadluo


    知识星球交流群


    展开全文
  • spark-sql on yarn 、spark-shell on yarn 详解

    千次阅读 2019-08-04 18:41:56
    关键字:spark-shell on yarn、spark-sql on yarn 前面的文章《Spark On Yarn:提交Spark应用程序到Yarn》介绍了将Spark应用程序提交到Yarn上运行。有时候在做开发测试的时候,需要使用spark-shell和spark-sql命令行...

    关键字:spark-shell on yarn、spark-sql on yarn

    前面的文章《Spark On Yarn:提交Spark应用程序到Yarn》介绍了将Spark应用程序提交到Yarn上运行。有时候在做开发测试的时候,需要使用spark-shell和spark-sql命令行,除了Local和Spark standalone模式,spark-shell和spark-sql也可以运行在yarn上,这里就简单介绍一下使用方法。

    spark-shell On Yarn

    如果你已经有一个正常运行的Hadoop Yarn环境,那么只需要下载相应版本的Spark,解压之后做为Spark客户端即可。

    需要配置Yarn的配置文件目录,export HADOOP_CONF_DIR=/etc/hadoop/conf   这个可以配置在spark-env.sh中。

    运行命令:

      
    1. cd $SPARK_HOME/bin
    2. ./spark-shell \
    3. --master yarn-client \
    4. --executor-memory 1G \
    5. --num-executors 10

    注意,这里的–master必须使用yarn-client模式,如果指定yarn-cluster,则会报错:

    Error: Cluster deploy mode is not applicable to Spark shells.

    因为spark-shell作为一个与用户交互的命令行,必须将Driver运行在本地,而不是yarn上。

    其中的参数与提交Spark应用程序到yarn上用法一样。

    启动之后,在命令行看上去和standalone模式下的无异:

    spark-shell on yarn

    在ResourceManager的WEB页面上,看到了该应用程序(spark-shell是被当做一个长服务的应用程序运行在yarn上):

    spark-shell on yarn

    点击ApplicationMaster的UI,进入到了Spark应用程序监控的WEB页面:

    spark-shell on yarn

     

    spark-sql On Yarn

    spark-sql命令行运行在yarn上,原理和spark-shell on yarn一样。只不过需要将Hive使用的相关包都加到Spark环境变量。

    1. 将hive-site.xml拷贝到$SPARK_HOME/conf

    2.export HIVE_HOME=/usr/local/apache-hive-0.13.1-bin 添加到spark-env.sh

    3.将以下jar包添加到Spark环境变量:

    datanucleus-api-jdo-3.2.6.jar、datanucleus-core-3.2.10.jar、datanucleus-rdbms-3.2.9.jar、mysql-connector-java-5.1.15-bin.jar

    可以在spark-env.sh中直接添加到SPARK_CLASSPATH变量中。

     

    运行命令:

      
    1. cd $SPARK_HOME/bin
    2. ./spark-sql \
    3. --master yarn-client \
    4. --executor-memory 1G \
    5. --num-executors 10

    即可在yarn上运行spark-sql命令行。
    spark-sql on yarn

    在ResourceManager上的显示以及点击ApplicationMaster进去Spark的WEB UI,与spark-shell无异。

    spark-sql on yarn

     

    这样,只要之前有使用Hadoop Yarn,那么就不需要搭建standalone的Spark集群,也能发挥Spark的强大威力了。

     

    展开全文
  • 项目实战之Spark-Sql的UDF功能实际运用、Spark-Sql中使用if返回多条件查询结果、Mysql中case-when多条件查询 1、Spark-Sql的UDF功能实际运用 通过spark.udf.register("udfName", func) 来进行注册 使用...

    项目实战之Spark-Sql的UDF功能实际运用、Spark-Sql中使用if返回多条件查询结果、Mysql中case-when多条件查询

    1、Spark-Sql的UDF功能实际运用

    	通过spark.udf.register("udfName", func) 来进行注册
    	使用:select udfName(name) from people 来直接使用
    

    a) 注册UDF方法

    val sqlContext = new SQLContext(sc)
    sqlContext.udf.register("feiif", (bool: Boolean, right: Double, wrong: Double) => if (bool) right else wrong)
    

    b) sql查询时使用UDF函数

    	val sqlContext = new SQLContext(sc)
      val resultQueryfeiIf = sqlContext.sql(
     	 """
            |select substring(requestdate,0,10) date,provincename,cityname,
            |sum(feiif(requestmode=1 and processnode >= 1,1,0)) requestumber,
            |sum(feiif(requestmode=1 and processnode >= 2 ,1,0)) validrequest
            |from RegionalStatisticsKpi group by substring(requestdate,0,10),provincename,cityname
      """.stripMargin)
    

    2、Spark-Sql中使用if返回多条件查询结果

    具体用法:select sum(if(条件 满足返回1,不满足返回0)),再对值进行聚合

    		   val sqlContext = new SQLContext(sc)
    		val resultQueryIf = sqlContext.sql(
    	      """
    	        |select substring(requestdate,0,10) date,provincename,cityname,
    	        |sum(if(requestmode=1 and processnode >= 1,1,0)) requestumber,
    	        |sum(if(requestmode=1 and processnode >= 2 ,1,0)) validrequest
    	        |from RegionalStatisticsKpi group by substring(requestdate,0,10),provincename,cityname
    	      """.stripMargin)
    

    3、Mysql中case-when多条件查询在Spark Sql中的使用

    具体用法:case when 条件 then 满足 1 else 不满足 0 end

    		使用case when then else end查询结果时需要使用聚合函数
    		    val sqlContext = new SQLContext(sc)
    			sqlContext.sql(
      //case when 条件 then 1 else 0
      """
    select substring(requestdate,0,10) date,provincename,cityname,
    	 |sum(case when requestmode=1 and processnode >= 1 then 1 else 0 end ) 		requestumber,
    	 |sum(case when requestmode=1 and processnode >= 2 then 1 else 0 end ) validrequest,
    	 | sum(case when requestmode=1 and processnode = 3 then 1 else 0 end ) advertisRequest 
    	 |from RegionalStatisticsKpi group by substring(requestdate,0,10),provincename,cityname
    	    """.stripMargin) 
    
    展开全文
  • mastering-spark-sql.pdf

    2019-10-11 09:20:48
    Jacek Laskowski的mastering-spark-sql.pdf,该资源为spark-sql部分
  • spark-sql-性能 一组针对Spark SQL的性能测试
  • spark-sql-perf

    千次阅读 2019-01-03 01:19:15
    spark-sql-perf 是一个 spark sql 性能测试框架,可以用来进行一些基准测试。 测试环境: spark 2.4.0 spark-sql-perf_2.11-0.5.0-SNAPSHOT 测试 tpcds-kit 通过 tpcds-kit 生成 TPC-DS 数据。 su...

    简介

    spark-sql-perf 是一个 spark sql 性能测试框架,可以用来进行一些基准测试。

    测试环境:

    • spark 2.4.0
    • spark-sql-perf_2.11-0.5.0-SNAPSHOT

    测试

    tpcds-kit

    通过 tpcds-kit 生成 TPC-DS 数据。

    sudo yum install gcc make flex bison byacc git
    git clone https://github.com/databricks/tpcds-kit.git
    cd tpcds-kit/tools
    make OS=LINUX
    

    spark-sql-perf

    编译打包,从$spark-sql-perf/target/scala-2.11 下获得需要的jar包(spark-sql-perf_2.11-0.5.0-SNAPSHOT.jar)

    git clone https://github.com/databricks/spark-sql-perf.git
    sbt package
    

    启动 spark-shell

        spark-shell \
        --conf spark.executor.instances=40 \
        --conf spark.executor.cores=3 \
        --conf spark.executor.memory=8g \
        --conf spark.executor.memoryOverhead=2g \
        --jars scala-logging-slf4j_2.11-2.1.2.jar,scala-logging-api_2.11-2.1.2.jar,spark-sql-perf_2.11-0.5.0-SNAPSHOT.jar
    

    生成数据

    需要提前将 tpcds-kit 分发到所有 spark executor 节点

    import com.databricks.spark.sql.perf.tpcds.TPCDSTables
    
    val rootDir = "hdfs://ns/user/admin/tpcds/data"
    val dsdgenDir = "/path/to/tpcds-kit/tools"
    val scaleFactor = "20"
    val format = "parquet"
    val databaseName = "tpcds"
    
    val sqlContext = spark.sqlContext
    val tables = new TPCDSTables(sqlContext,
        dsdgenDir = dsdgenDir, 
        scaleFactor = scaleFactor,
        useDoubleForDecimal = true, 
        useStringForDate = true)
    
    tables.genData(
        location = rootDir,
        format = format,
        overwrite = true,
        partitionTables = true, 
        clusterByPartitionColumns = true, 
        filterOutNullPartitionValues = false, 
        tableFilter = "", 
        numPartitions = 120)
    
    //创建临时表
    tables.createTemporaryTables(rootDir, format)    
    //将表信息注册到 hive metastore
    //sql(s"create database $databaseName")   
    //tables.createExternalTables(rootDir, format, databaseName, overwrite = true, discoverPartitions = true)
    

    执行查询

    默认情况下,使用 runExperiment 会在后台线程中进行,最终将结果以JSON格式保存到 resultLocation 下时间戳命名的子目录中,例如 $resultLocation/timestamp=1429213883272

    import com.databricks.spark.sql.perf.tpcds.TPCDS
    
    val tpcds = new TPCDS (sqlContext)
    val databaseName = "tpcds" 
    sql(s"use $databaseName")
    
    val resultLocation = "hdfs://ns/user/admin/result"
    val iterations = 1 
    val queries = tpcds.tpcds2_4Queries
    //单个查询设置超时时间
    val timeout = 300
    
    val experiment = tpcds.runExperiment(
      queries, 
      iterations = iterations,
      resultLocation = resultLocation,
      forkThread = true)
    experiment.waitForFinish(timeout)
    

    运行时截图

    查询结果

    有两种获取方式,如果 experiment 还没有关闭,可以使用 experiment.getCurrentResults 方法获取

    //从 experiment 获取结果
    experiment.getCurrentResults.
    withColumn("Name", substring(col("name"), 2, 100)).
    withColumn("Runtime", (col("parsingTime") + col("analysisTime") + col("optimizationTime") + col("planningTime") + col("executionTime")) / 1000.0).
    selectExpr('Name, 'Runtime)
    

    如果已经关闭,则可以从 resultLocation 中获取结果JSON文件并解析

    //从文件中读取
    val result = spark.read.json(resultLocation)
    result.select("results.name","results.executionTime").flatMap(r=>{
        val name = r.getAs[Seq[String]]("name")
        val executionTime = r.getAs[Seq[Double]]("executionTime")
        name.zip(executionTime)
    }).toDF("name","executionTime").show()
    

    TPC-DS

    TPC-DS采用星型、雪花型等多维数据模式。它包含7张事实表,17张纬度表平均每张表含有18列。其工作负载包含99个SQL查询,覆盖SQL99和2003的核心部分以及OLAP。这个测试集包含对大数据集的统计、报表生成、联机查询、数据挖掘等复杂应用,测试用的数据和值是有倾斜的,与真实数据一致。可以说TPC-DS是与真实场景非常接近的一个测试集,也是难度较大的一个测试集。

    TPC-DS的这个特点跟大数据的分析挖掘应用非常类似。Hadoop等大数据分析技术也是对海量数据进行大规模的数据分析和深度挖掘,也包含交互式联机查询和统计报表类应用,同时大数据的数据质量也较低,数据分布是真实而不均匀的。因此TPC-DS成为客观衡量多个不同Hadoop版本以及SQL on Hadoop技术的最佳测试集。这个基准测试有以下几个主要特点:

    • 一共99个测试案例,遵循SQL’99和SQL 2003的语法标准,SQL案例比较复杂
    • 分析的数据量大,并且测试案例是在回答真实的商业问题
    • 测试案例中包含各种业务模型(如分析报告型,迭代式的联机分析型,数据挖掘型等)
    • 几乎所有的测试案例都有很高的IO负载和CPU计算需求

    FAQ

    执行 new TPCDS 时如果提示

    java.lang.ClassNotFoundException: com.typesafe.scalalogging.slf4j.LazyLogging
    java.lang.ClassNotFoundException: com.typesafe.scalalogging.Logging
    

    导入相应的包即可

    --jars /path/to/scala-logging-slf4j_2.11-2.1.2.jar,/path/to/scala-logging-api_2.11-2.1.2.jar
    
    展开全文
  • Spark-Shiro-Spark是Spring-Boot Hibernate Spark Spark-SQL Shiro iView VueJs ... ...的集成尝试 主要做了两件事 前一级分离下的用户认证和鉴权实践 Spring Boot与Spark的集成实践 欢迎批评指教
  • 关键字:spark-shell on yarn、spark-sql on yarn 前面的文章《Spark On Yarn:提交Spark应用程序到Yarn》介绍了将Spark应用程序提交到Yarn上运行。有时候在做开发测试的时候,需要使用spark-shell和spark-sql命令行...
  • spark-sql等等

    2018-04-28 14:21:42
    本文详细的描述了spark-sql的一些常用的命令等。。。。。
  • 场景 : 在前端页面提交一个spark-sql,然后通过spark-thrift-server 调用来执行. sql逻辑很简单, 就是使用join关联两表(一个大表90G,一个小表3G)查询,前台界面执行出错.后台抛出java.lang.OutOfMemoryError: GC ...
  • spark-shell & spark-sql 使用

    千次阅读 2019-07-03 22:31:42
    spark-shell 启动 spark-shell [hadoop@hadoop2 bin]$ ./spark-shell --master local[2] \ --jars /opt/module/hive-1.2.2/lib/mysql-connector-java-5.1.27-bin.jar 通过 spark-shell 操作 hive ...
  • spark-sql_2.11-2.4.0-cdh6.1.1.jar
  • jaws-spark-sql-rest.zip

    2019-07-19 14:05:25
    代号为 Jaws 的 jaws-spark-sql-rest 是一个 Spark SQL/Shark 队列的 RESTful 服务,基于 Spark ,提供 Mesos 和 Tachyon 支持。当前支持 Spark 0.9.x 和 Shark 作为后端框架。
  • spark-sql 基础教程

    2018-01-19 17:44:07
    spark-sql 基础理论教程。详细介绍了spark sql的工作原理。以及hive在spark上如何工作。
  • spark-shell、spark-sql 都是是一个独立的 spark application,启动几个就是几个 spark application每次都要重新启动申请资源。 用thriftserver,无论启动多少个客户端(beeline),只要是连在一个thriftserver上,...
  • Spark-SQL之DataFrame操作大全

    万次阅读 多人点赞 2016-10-12 23:31:35
    Spark SQL中的DataFrame类似于一张关系型数据表。在关系型数据库中对单表或进行的查询操作,在DataFrame中都可以通过调用其API接口来实现。可以参考,Scala提供的DataFrame API。 本文中的代码基于Spark-1.6.2的...
  • 这是每个学习spark必备的jar包,是根据我的个人试验后所得,官网正版,在spark官网下载。 资源包里不仅有需要的jar包,并且给不会再官网上下载的新手官方网址,可以自由下载资源
  • beeline,spark-beeline,spark-sql区别

    千次阅读 2019-07-12 16:14:40
    命令 连接用户 执行计算框架 说明 备注 beeline 登录的集群用户 MapReduce 使用此命令可以以命令行的方式... spark-sql 登录的集群用户 spark2x 使用此命令可以很...
  • spark-sql_2.11-2.1.3-SNAPSHOT_bak.jar
  • spark-sql执行hivesql

    千次阅读 2018-08-27 14:40:02
    spark提交命令有spark-shell、spark-submit、spark-sqlspark-sql的提交命令很少见吧,不过已经被我发掘出来了。 我们执行hive命令一般都是 hive -e 'select * from xx' 或者 hive -f /home/hadoop/xx....
  • spark-SQL -e -f 的用法

    千次阅读 2019-07-16 16:14:22
    spark-sql -help 出现用法提示 spark-sql --database bigdata -e "select * from dw_results limit 1000;" > /home/results.txt --database 选择对应的hive数据库 -e 对应的sql语句 --num-exectors 10 ...
  • Spark-SQL解析

    千次阅读 2018-10-30 19:44:04
    Spark-SQL解析 如下图所示,Spark-SQL解析总体分为以下几个步骤:解析(Parser)、分析(Analysis)、优化(Optimization)、执行(Physical)、生成RDD(RDDs)。接下来,我们先介绍解析和分析两部分,对于逻辑...
  • spark-sql使用

    千次阅读 2017-12-11 19:33:00
    spark-sql spark-sql 在cli端的操作 使用spark-sql编程需要配置jar包 通过反射推断schema 通过structtype指定schema 通过spark-shell从mysql中加载数据 将数据保存到mysql中 hive-on=spark spark-sqlDataFrames:...
  • spark-shell与spark-sql的访问hive

    千次阅读 2018-11-22 23:44:10
    1.spark-shell的使用: 安装完spark之后,将spark/bin的路径配置到本地文件,即可不需要进入spark/bin目录下启动任务 ...spark.sql("show tables").show() 2)将hive/conf目录下的hive-site....
  • SparkSQL与Hive的交互有两种方式,一种是spark-sql,另一种是spark-shell。要注意,访问hive前要把$HIVE_HOME/conf/hive-site.xml拷贝到$SPARK_HOME/conf,还有必须要启动hdfs,因为hive的数据是存放在hdfs上的,既然...
  • 运行spark-sql的几种方式2.1 spark-shell的方式2.2 beeline的方式2.3 spark-sql的方式参考: 一.环境介绍 我本地的环境的CDH 6.3.1的环境,自己已经将spark软件安装成功了。 然后有一个节点因为不小心升级了spark的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 98,567
精华内容 39,426
关键字:

spark-sql