问题一:解析spark-submit命令行参数的时候用到了第三方包scopt,该包需要引入
<dependency> <groupId>com.github.scoptgroupId> <artifactId>scopt_2.10artifactId> <version>3.2.0version> dependency>
,引入之后直接使用idea打包(build-build artifacts-rebuild)报错:找不到类scopt.OptionParser
然后意识到是依赖没有打入包
重新配置file-project structure将所有包加入,重新打包,依然报同样错误
然后试图使用maven打包
首先配置
<plugin> <artifactId>maven-assembly-pluginartifactId> <configuration> <archive> <manifest> <mainClass>com.daojia.xing.SuYunSDKmainClass> manifest> archive> <descriptorRefs> <descriptorRef>jar-with-dependenciesdescriptorRef> descriptorRefs> <descriptorRefs> <descriptorRef>jar-with-dependenciesdescriptorRef> descriptorRefs> configuration> plugin>
点击最左下脚图标 弹出上拉框 单机maven project 左侧出现对话框 然后plugins 选择assembly:assembly
问题解决。
ps:
问题二:程序中用到hive.hiveContext类,需要引入,之前引入了错误的包,导致程序提示有错误
正确的引入如下:
<dependency> <groupId>org.apache.sparkgroupId> <artifactId>spark-hive_2.10artifactId> <version>1.6.1version> 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):41: error: (String, String) does not take parameters line(0) ^ scala> line._1 res28: String = work_date