栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 云计算 > 云平台

Spark学习:为Sparksql添加自定义命令

云平台 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spark学习:为Sparksql添加自定义命令

编译Spark源码
    • 一、修改SqlBase4添加语法规则
    • 二、 Maven编译antlr
    • 三、修改SqlParsqlParser.scala中
    • 四、运行

一、修改SqlBase4添加语法规则
#修改四处
statement
| SHOW VERSION                                                     #showVersion

ansiNonReserved
| VERSION

nonReserved
| VERSION

//--SPARK-KEYWORD-LIST-START
VERSION: 'VERSION' | 'V';

二、 Maven编译antlr

三、修改SqlParsqlParser.scala中

1、增加visitShowVersion方法

override def visitShowVersion(ctx: ShowVersionContext): LogicalPlan = withOrigin(ctx) {
    ShowVersionCommand()
}

2、实现ShowVersionCommand类


package org.apache.spark.sql.execution.command

import org.apache.spark.sql.{Row, SparkSession}
import org.apache.spark.sql.catalyst.expressions.{Attribute, AttributeReference}
import org.apache.spark.sql.types.StringType


case class ShowVersionCommand() extends LeafRunnableCommand {

  override val output: Seq[Attribute] =
    Seq(AttributeReference("version", StringType)())

  override def run(sparkSession: SparkSession): Seq[Row] = {
    val sparkVersion = sparkSession.version
    val javaVersion = System.getProperty("java.version")
    val scalaVersion = scala.util.Properties.releaseVersion
    val output = "Spark Version: %s, Java Version: %s, Scala Version: %s"
      .format(sparkVersion, javaVersion, scalaVersion.getOrElse(""))
    Seq(Row(output))
  }
}
四、运行

1、powershell中运行spark-sql报错

Failed to load class org.apache.spark.sql.hive.thriftserver.SparkSQLCLIDriver

网上查了查后,是缺少与hive相关的依赖包

//源码根目录重新编译后会额外多生成两个jar包
mvn clean package -DskipTests -Phive -Phive-thriftserver

2、结果
然后重新编译了一遍

mvn package -DskipTests -Phive -Phive-thriftserver

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/897418.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号