Spark程序编写过程中的常见问题
来源:互联网 发布:网络不可用是怎么回事 编辑:程序博客网 时间:2024/06/06 20:06
1、使用IDEA 或者是 eclipse IDE来编写程序时,关于导包的问题。
在这些IDE过程中,如果网络可以的话,建议选择maven或者是sbt的模式,但是如果网络很差的话,还是老老实实的把我们需要的包导入吧,编写spark程序时,需要导入的 包,只有一个,那就是spark-assembly-1.4.0-hadoop2.6.0.jar,只要是assembly类型的集成包就行,一般都会满足你的基本需求。
(1)导包问题一
导入hadoop的包,在程序中没有用到hadoop的组件的时候,来导入hadoop的包,这样很容易出现问题,比如先导入hadoop的bin包,在导入spark的包,那么这时候程序执行就会出现问题,程序就会报如下的异常:
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
15/09/23 15:47:15 INFO SparkContext: Running Spark version 1.4.0
Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/collect/Maps
at org.apache.hadoop.metrics2.lib.MetricsRegistry.<init>(MetricsRegistry.java:42)
at org.apache.hadoop.metrics2.impl.MetricsSystemImpl.<init>(MetricsSystemImpl.java:94)
at org.apache.hadoop.metrics2.impl.MetricsSystemImpl.<init>(MetricsSystemImpl.java:141)
at org.apache.hadoop.metrics2.lib.DefaultMetricsSystem.<init>(DefaultMetricsSystem.java:38)
at org.apache.hadoop.metrics2.lib.DefaultMetricsSystem.<clinit>(DefaultMetricsSystem.java:36)
at org.apache.hadoop.security.UserGroupInformation$UgiMetrics.create(UserGroupInformation.java:120)
at org.apache.hadoop.security.UserGroupInformation.<clinit>(UserGroupInformation.java:236)
at org.apache.spark.util.Utils$$anonfun$getCurrentUserName$1.apply(Utils.scala:2162)
at org.apache.spark.util.Utils$$anonfun$getCurrentUserName$1.apply(Utils.scala:2162)
at scala.Option.getOrElse(Option.scala:120)
at org.apache.spark.util.Utils$.getCurrentUserName(Utils.scala:2162)
at org.apache.spark.SparkContext.<init>(SparkContext.scala:301)
at sparkSQL.SparkSQL_Jdbc01$.initalSparkContext(SparkSQL_Jdbc01.scala:18)
at sparkSQL.SparkSQL_Jdbc01$.main(SparkSQL_Jdbc01.scala:35)
at sparkSQL.SparkSQL_Jdbc01.main(SparkSQL_Jdbc01.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
Caused by: java.lang.ClassNotFoundException: com.google.common.collect.Maps
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 20 more
15/09/23 15:47:15 INFO Utils: Shutdown hook called
这个问题不仅仅是在idea上面,在eclipse上面同样会有这样的问题,这个是我已经做过实验的,可能是跟程序的加载包的顺序有关,而且现在spark已经十分完善了,所以尽量不用导入hadoop的包。
(2)建议导入集成包,拒绝单包导入,这样会很麻烦,而且对于初学者也是一个不小的挑战。
(3)在spark SQL连接oracle数据库的过程中,如果数据库中存在自动生成的ID,一定要注意可能会有overflow precision这样的异常报出,这样报出的原因就是就是自动生成的ID是number类型,并且可能没有指定数据类型的长度,导致的,这个错误及其隐秘,大家要多多注意哦(特别是自己)
- Spark程序编写过程中的常见问题
- 使用IDEA编写基于Scala的spark程序中的常见问题
- Spark程序常见问题
- 加密狗程序编写过程中的点滴
- java编写spark程序
- java编写spark程序
- 编写,编译,运行Java程序过程中的编码解码过程
- 编写Spark SQL查询程序
- 软件开发过程中的常见问题
- 软件开发过程中的常见问题
- 软件开发过程中的常见问题
- 存储过程中的一些常见问题
- apache安装过程中的常见问题
- 指针运用过程中的常见问题
- TMS320F28377S开发过程中的常见问题
- spark程序的运行过程
- 编写 Windows 服务程序时的常见问题
- java编写WordCound的Spark程序,Scala编写wordCound程序
- sicily 1021. Couples
- github page + jekyllrb 搭建新博客
- C# struct(结构)与按值复制、按索引复制详解
- 关于IOS Autolayout 的一点小记录
- oracle数据库,mybatise批量插入数据
- Spark程序编写过程中的常见问题
- 单链表的反转(非递归与递归版本)
- hdu 1698 Just a Hook 线段树区间更新
- 接口的规范
- 内核配置make menuconfig 找不到arm选项
- UVALive 6844 Combination(组合数学)
- [论文阅读]随机蕨:FAST Key Points Recognition Using Random Ferns
- 对终端输入的行内容进行字典排序并把结果输出出来
- USART、SPI、IIC的区别