spark命令行解析与找不到类scopt.OptionParser

在解析`spark-submit`命令行参数时遇到`scopt.OptionParser`找不到类的问题,经排查发现依赖未正确打入包中。尝试通过IntelliJ IDEA的maven插件配置assembly解决,成功打包。另外,程序中遇到hive的`hiveContext`引用错误,需引入正确包。还碰到Scala中的`(String, String)`,即元组的概念,需加强Scala学习。" 113558356,10538336,Android手势操作:实现View的缩放和平移,"['Android开发', '图形界面', '手势识别', '图片处理']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题一:解析spark-submit命令行参数的时候用到了第三方包scopt,该包需要引入

<dependency>
  <groupId>com.github.scopt</groupId>
  <artifactId>scopt_2.10</artifactId>
  <version>3.2.0</version>
</dependency>

,引入之后直接使用idea打包(build-build artifacts-rebuild)报错:找不到类scopt.OptionParser

然后意识到是依赖没有打入包

重新配置file-project structure将所有包加入,重新打包,依然报同样错误

然后试图使用maven打包

首先配置

<plugin>
  <artifactId>maven-assembly-plugin</artifactId>

  <configuration>
      <archive>
        <manifest>
          <mainClass>com.daojia.xing.SuYunSDK</mainClass>
        </manifest>
      </archive>
      <descriptorRefs>
        <descriptorRef>jar-with-dependencies</descriptorRef>
      </descriptorRefs>
    <descriptorRefs>
      <descriptorRef>jar-with-dependencies</descriptorRef>
    </descriptorRefs>
  </configuration>
</plugin>

点击最左下脚图标 弹出上拉框 单机maven project  左侧出现对话框 然后plugins 选择assembly:assembly

问题解决。

ps:

问题二:程序中用到hive.hiveContext类,需要引入,之前引入了错误的包,导致程序提示有错误

正确的引入如下:

<dependency>
  <groupId>org.apache.spark</groupId>
  <artifactId>spark-hive_2.10</artifactId>
  <version>1.6.1</version>
</dependency>

问题三:又是一个奇葩的问题,见识浅薄了,(String,String)不知道scala中这是个什么鬼,不是array,不是list,不是map,最后的最后发现scala有一个类型叫做元祖,在此纠结了好久,要加强学习

 

scala> val types=hiveContext.sql("select * from a_fin_account_day limit 10").dtypes
types: Array[(String, String)] = Array((work_date,StringType), (user_id,LongType), (account_id,LongType), (source,StringType), (sy_vip_flag,StringType), (sy_vip_account_type,StringType), (dk_bussiness,DoubleType), (balance,DoubleType), (recharge,DoubleType), (recharge_num,DoubleType), (consume,DoubleType), (consume_num,DoubleType), (order_balance_pay,DoubleType), (order_refund,DoubleType), (account_refund,DoubleType), (adjust,DoubleType), (is_new_charge,DoubleType), (dk_jz_consume,DoubleType), (dk_lr_consume,DoubleType), (bi_update_time,StringType))
scala> val line=types(0)
line: (String, String) = (work_date,StringType)
scala> line(0)
<console>:41: error: (String, String) does not take parameters
              line(0)
                ^
scala> line._1
res28: String = work_date

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值