• spark-sql sql on yarn --deploy-mode cluster 改造


    前言

    众所周知,spark-sql 不能提交到远端并且使用 cluster进行部署:

    huangyichun@bigdata130023:~ # spark-sql --master yarn --deploy-mode cluster
    Exception in thread "main" org.apache.spark.SparkException: Cluster deploy mode is not applicable to Spark SQL shell.
         at org.apache.spark.deploy.SparkSubmit.error(SparkSubmit.scala:972)
         at org.apache.spark.deploy.SparkSubmit.prepareSubmitEnvironment(SparkSubmit.scala:283)
         at org.apache.spark.deploy.SparkSubmit.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:898)
         at org.apache.spark.deploy.SparkSubmit.doRunMain$1(SparkSubmit.scala:180)
         at org.apache.spark.deploy.SparkSubmit.submit(SparkSubmit.scala:203)
         at org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:90)
         at org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:1043)
         at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:1052)
         at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    如果环境可以请使用 --deploy-mode client,如果有特殊需要请见下

    这是由于spark-sql 提供了一种本地交互模式,让client端在交互模式中提供sql进行执行。但spark-sql 也有 -e-f 模式,提供用户一种 -e sqlString-f sqlFile 的方式运行,这两种方式并不需要交互模式。
    所以对此本博客修改了spark-sql源码,删除了交互模式的退出判断,让spark-sql可以直接运行在 cluster中。并与源生一样,可以使用-e sqlString 以及-f sqlFile进行提交。

    改造jar包获取

    包可以直接下载这里(不需要积分,请好评),或者github查看源码更改spark版本
    提供的包为 spark 3.2.2 版本,scala 2.12版本;与hadoop版本无关。

    github地址: https://github.com/ChunChunWeb/spark-sql-for-cluster

    运行方式

    可以通过 shell 命令直接提交:

    spark-submit --class org.apache.spark.sql.hive.cluster.SparkSqlCliClusterDriver  \
    --master yarn \
    --deploy-mode cluster \
    my-spark-sql-cluster.jar 
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    耗时6个月,我们做了一款干净、免费、开源的AI数据库管理工具
    VUE扫码枪中文输入法兼容自动回车事件
    Janus之自问自答
    (02)Cartographer源码无死角解析-(28) GlobalTrajectoryBuilder构建过程与整体分析
    优维低代码实践:片段
    【校招VIP】java开源框架之redis
    pandas读取json文件,文件中包含多个json对象
    【算法训练-动态规划 五】【二维DP问题】最大正方形
    python实现FINS协议的TCP服务端(篇二)
    2022.11.16-----leetcode.775
  • 原文地址:https://blog.csdn.net/qq_36610426/article/details/132984595