Apache spark Avro的Spark教程
我从Spark开始,我的用例是读取Avro文件(数据源)并根据规则执行ETL。首先,我只是想尝试阅读AVRO并创建一个RDD。根据其中一个stackoverflow站点的建议,我`Apache spark Avro的Spark教程,apache-spark,Apache Spark,我从Spark开始,我的用例是读取Avro文件(数据源)并根据规则执行ETL。首先,我只是想尝试阅读AVRO并创建一个RDD。根据其中一个stackoverflow站点的建议,我` object abc { def main(args: Array[String]): Unit = { //val master = Properties.envOrElse("MASTER",args(0)) val path = args(0) val sparkConte
object abc {
def main(args: Array[String]): Unit =
{
//val master = Properties.envOrElse("MASTER",args(0))
val path = args(0)
val sparkContext = new SparkContext(new SparkConf().setAppName("My-spark-app"))
val jobConf = new JobConf(sparkContext.hadoopConfiguration)
val rdd = sparkContext.hadoopFile (
path,
classOf[org.apache.avro.mapred.AvroInputFormat[GenericRecord]],
classOf[org.apache.avro.mapred.AvroWrapper[GenericRecord]],
classOf[org.apache.hadoop.io.NullWritable],
10)
println(rdd.first)
}
}`
我的环境是CDH 5.1.3。我得到以下错误
15/03/17 08:53:58 INFO YarnClientClusterScheduler: YarnClientClusterScheduler.postStartHook done
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/avro/mapred/AvroInputFormat
at com.scif.afw.abc$.main(abc.scala:30)
at com.scif.afw.abc.main(abc.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.spark.deploy.SparkSubmit$.launch(SparkSubmit.scala:292)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:55)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
Caused by: java.lang.ClassNotFoundException: org.apache.avro.mapred.AvroInputFormat
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
我已经使用Maven构建了这个项目,我的POM有AVROJAR,我可以在jar中看到这个类
感谢您的帮助如果您使用的是yarn cluster,则可能会有来自warn.application.classpath的avro jar。NoClassDefFound可能是由类路径中同一类的多个实例引起的(1个来自您的jar,2个来自默认应用程序类路径)