SparkSQL注册表时MissingRequirementError

2023-11-27

我是 Scala 和 Apache Spark 的新手,我正在尝试使用 Spark SQL。克隆后repo我通过输入启动了 Spark shellbin/spark-shell并运行以下命令:

val sqlContext = new org.apache.spark.sql.SQLContext(sc)
import sqlContext.createSchemaRDD
val pathUsers = "users.txt"
case class User(uid: String, name: String, surname: String)
val users = sc.textFile(pathUsers).map(_.split(" ")).map(u => User(u(0), u(1), u(2)))
users.registerTempTable("users")
val res = sqlContext.sql("SELECT * FROM users")
res.collect().foreach(println)

一切都按预期进行。这users.txt文件是这样的:

uid-1 name1 surname1
uid-2 name2 surname2
...

之后我尝试创建一个独立项目并使用构建依赖项sbt。列出的依赖项build.sbt如下:

"org.apache.spark" % "spark-streaming_2.10" % "1.2.0",
"org.apache.spark" % "spark-streaming-kafka_2.10" % "1.2.0",
"org.apache.spark" % "spark-sql_2.10" % "1.2.0",
"org.apache.spark" % "spark-catalyst_2.10" % "1.2.0"

如果我运行相同的指令,它会在此行崩溃:

users.registerTempTable("users")

出现此错误:

scala.reflect.internal.MissingRequirementError: class org.apache.spark.sql.catalyst.ScalaReflection in JavaMirror with java.net.URLClassLoader@56352b57 of type class java.net.URLClassLoader with classpath [file:/Users/se7entyse7en/.sbt/boot/scala-2.10.4/lib/jansi.jar,file:/Users/se7entyse7en/.sbt/boot/scala-2.10.4/lib/jline.jar,file:/Users/se7entyse7en/.sbt/boot/scala-2.10.4/lib/scala-compiler.jar,file:/Users/se7entyse7en/.sbt/boot/scala-2.10.4/lib/scala-library.jar,file:/Users/se7entyse7en/.sbt/boot/scala-2.10.4/lib/scala-reflect.jar] and parent being xsbt.boot.BootFilteredLoader@599e80b1 of type class xsbt.boot.BootFilteredLoader with classpath [<unknown>] and parent being sun.misc.Launcher$AppClassLoader@76d4d81 of type class sun.misc.Launcher$AppClassLoader with classpath [file:/usr/local/Cellar/sbt/0.13.5/libexec/sbt-launch.jar] and parent being sun.misc.Launcher$ExtClassLoader@18fb53f6 of type class sun.misc.Launcher$ExtClassLoader with classpath [file:/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre/lib/ext/dnsns.jar,file:/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre/lib/ext/localedata.jar,file:/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre/lib/ext/sunec.jar,file:/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar,file:/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar,file:/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre/lib/ext/zipfs.jar,file:/System/Library/Java/Extensions/MRJToolkit.jar] and parent being primordial classloader with boot classpath [/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre/lib/sunrsasign.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre/lib/JObjC.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre/classes] not found.
at scala.reflect.internal.MissingRequirementError$.signal(MissingRequirementError.scala:16)
at scala.reflect.internal.MissingRequirementError$.notFound(MissingRequirementError.scala:17)
at scala.reflect.internal.Mirrors$RootsBase.getModuleOrClass(Mirrors.scala:48)
at scala.reflect.internal.Mirrors$RootsBase.getModuleOrClass(Mirrors.scala:61)
at scala.reflect.internal.Mirrors$RootsBase.staticModuleOrClass(Mirrors.scala:72)
at scala.reflect.internal.Mirrors$RootsBase.staticClass(Mirrors.scala:119)
at scala.reflect.internal.Mirrors$RootsBase.staticClass(Mirrors.scala:21)
at org.apache.spark.sql.catalyst.ScalaReflection$$typecreator1$1.apply(ScalaReflection.scala:115)
at scala.reflect.api.TypeTags$WeakTypeTagImpl.tpe$lzycompute(TypeTags.scala:231)
at scala.reflect.api.TypeTags$WeakTypeTagImpl.tpe(TypeTags.scala:231)
at scala.reflect.api.TypeTags$class.typeOf(TypeTags.scala:335)
at scala.reflect.api.Universe.typeOf(Universe.scala:59)
at org.apache.spark.sql.catalyst.ScalaReflection$class.schemaFor(ScalaReflection.scala:115)
at org.apache.spark.sql.catalyst.ScalaReflection$.schemaFor(ScalaReflection.scala:33)
at org.apache.spark.sql.catalyst.ScalaReflection$class.schemaFor(ScalaReflection.scala:100)
at org.apache.spark.sql.catalyst.ScalaReflection$.schemaFor(ScalaReflection.scala:33)
at org.apache.spark.sql.catalyst.ScalaReflection$class.attributesFor(ScalaReflection.scala:94)
at org.apache.spark.sql.catalyst.ScalaReflection$.attributesFor(ScalaReflection.scala:33)
at org.apache.spark.sql.SQLContext.createSchemaRDD(SQLContext.scala:111)
at .<init>(<console>:20)
at .<clinit>(<console>)
at .<init>(<console>:7)
at .<clinit>(<console>)
at $print(<console>)
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 scala.tools.nsc.interpreter.IMain$ReadEvalPrint.call(IMain.scala:734)
at scala.tools.nsc.interpreter.IMain$Request.loadAndRun(IMain.scala:983)
at scala.tools.nsc.interpreter.IMain.loadAndRunReq$1(IMain.scala:573)
at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:604)
at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:568)
at scala.tools.nsc.interpreter.ILoop.reallyInterpret$1(ILoop.scala:760)
at scala.tools.nsc.interpreter.ILoop.interpretStartingWith(ILoop.scala:805)
at scala.tools.nsc.interpreter.ILoop.command(ILoop.scala:717)
at scala.tools.nsc.interpreter.ILoop.processLine$1(ILoop.scala:581)
at scala.tools.nsc.interpreter.ILoop.innerLoop$1(ILoop.scala:588)
at scala.tools.nsc.interpreter.ILoop.loop(ILoop.scala:591)
at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply$mcZ$sp(ILoop.scala:882)
at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply(ILoop.scala:837)
at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply(ILoop.scala:837)
at scala.tools.nsc.util.ScalaClassLoader$.savingContextLoader(ScalaClassLoader.scala:135)
at scala.tools.nsc.interpreter.ILoop.process(ILoop.scala:837)
at scala.tools.nsc.interpreter.ILoop.main(ILoop.scala:904)
at xsbt.ConsoleInterface.run(ConsoleInterface.scala:69)
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 sbt.compiler.AnalyzingCompiler.call(AnalyzingCompiler.scala:102)
at sbt.compiler.AnalyzingCompiler.console(AnalyzingCompiler.scala:77)
at sbt.Console.sbt$Console$$console0$1(Console.scala:23)
at sbt.Console$$anonfun$apply$2$$anonfun$apply$1.apply$mcV$sp(Console.scala:24)
at sbt.Console$$anonfun$apply$2$$anonfun$apply$1.apply(Console.scala:24)
at sbt.Console$$anonfun$apply$2$$anonfun$apply$1.apply(Console.scala:24)
at sbt.Logger$$anon$4.apply(Logger.scala:90)
at sbt.TrapExit$App.run(TrapExit.scala:244)
at java.lang.Thread.run(Thread.java:744)

问题是什么?

UPDATE:

好吧,我不认为问题出在 Spark SQL 上,而是 Spark 本身,因为我什至无法执行users.collect()。相反,如果它在 Spark shell 中运行,结果是:

res5: Array[User] = Array(User(uid-1,name1,surname1), User(uid-2,name2,surname2))

正如预期的那样。错误如下:

15/01/08 09:47:02 INFO FileInputFormat: Total input paths to process : 1
15/01/08 09:47:02 INFO SparkContext: Starting job: collect at <console>:19
15/01/08 09:47:02 INFO DAGScheduler: Got job 0 (collect at <console>:19) with 2 output partitions (allowLocal=false)
15/01/08 09:47:02 INFO DAGScheduler: Final stage: Stage 0(collect at <console>:19)
15/01/08 09:47:02 INFO DAGScheduler: Parents of final stage: List()
15/01/08 09:47:02 INFO DAGScheduler: Missing parents: List()
15/01/08 09:47:02 INFO DAGScheduler: Submitting Stage 0 (MappedRDD[3] at map at <console>:17), which has no missing parents
15/01/08 09:47:02 INFO MemoryStore: ensureFreeSpace(2840) called with curMem=157187, maxMem=556038881
15/01/08 09:47:02 INFO MemoryStore: Block broadcast_1 stored as values in memory (estimated size 2.8 KB, free 530.1 MB)
15/01/08 09:47:02 INFO MemoryStore: ensureFreeSpace(2002) called with curMem=160027, maxMem=556038881
15/01/08 09:47:02 INFO MemoryStore: Block broadcast_1_piece0 stored as bytes in memory (estimated size 2002.0 B, free 530.1 MB)
15/01/08 09:47:02 INFO BlockManagerInfo: Added broadcast_1_piece0 in memory on 192.168.100.195:63917 (size: 2002.0 B, free: 530.3 MB)
15/01/08 09:47:02 INFO BlockManagerMaster: Updated info of block broadcast_1_piece0
15/01/08 09:47:02 INFO SparkContext: Created broadcast 1 from broadcast at DAGScheduler.scala:838
15/01/08 09:47:02 INFO DAGScheduler: Submitting 2 missing tasks from Stage 0 (MappedRDD[3] at map at <console>:17)
15/01/08 09:47:02 INFO TaskSchedulerImpl: Adding task set 0.0 with 2 tasks
15/01/08 09:47:02 INFO TaskSetManager: Starting task 0.0 in stage 0.0 (TID 0, 192.168.100.195, PROCESS_LOCAL, 1326 bytes)
15/01/08 09:47:02 INFO TaskSetManager: Starting task 1.0 in stage 0.0 (TID 1, 192.168.100.195, PROCESS_LOCAL, 1326 bytes)
15/01/08 09:47:02 WARN TaskSetManager: Lost task 1.0 in stage 0.0 (TID 1, 192.168.100.195): java.io.EOFException
at java.io.ObjectInputStream$BlockDataInputStream.readFully(ObjectInputStream.java:2744)
at java.io.ObjectInputStream.readFully(ObjectInputStream.java:1032)
at org.apache.hadoop.io.DataOutputBuffer$Buffer.write(DataOutputBuffer.java:63)
at org.apache.hadoop.io.DataOutputBuffer.write(DataOutputBuffer.java:101)
at org.apache.hadoop.io.UTF8.readChars(UTF8.java:216)
at org.apache.hadoop.io.UTF8.readString(UTF8.java:208)
at org.apache.hadoop.mapred.FileSplit.readFields(FileSplit.java:87)
at org.apache.hadoop.io.ObjectWritable.readObject(ObjectWritable.java:237)
at org.apache.hadoop.io.ObjectWritable.readFields(ObjectWritable.java:66)
at org.apache.spark.SerializableWritable$$anonfun$readObject$1.apply$mcV$sp(SerializableWritable.scala:43)
at org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:985)
at org.apache.spark.SerializableWritable.readObject(SerializableWritable.scala:39)
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 java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
at org.apache.spark.serializer.JavaDeserializationStream.readObject(JavaSerializer.scala:62)
at org.apache.spark.serializer.JavaSerializerInstance.deserialize(JavaSerializer.scala:87)
at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:178)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)

我也发现了这个以编程方式提交作业时 Spark EC2 集群上出现 java.io.EOFException,但不知道哪个版本hadoop-client可能需要。


这个问题可以通过添加来解决fork := true到 sbt 项目设置。

See: http://apache-spark-developers-list.1001551.n3.nabble.com/Spark-1-2-0-MissingRequirementError-td10123.html

其他有用的设置可能会在引用的项目文件中找到:

https://github.com/deanwampler/spark-workshop/blob/master/project/Build.scala

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SparkSQL注册表时MissingRequirementError 的相关文章

随机推荐

  • 为什么没有 OutOfMemoryError 子类?

    众所周知 造成这种情况的原因是多方面的OutOfMEmoryError see 第一个答案 为什么只有一个异常涵盖所有这些情况 而不是继承自的多个细粒度异常OutOfMEmoryError 我预料到了 因为当这种情况发生时 你真的无能为力
  • constexpr 问题,为什么这两个不同的程序使用 g++ 运行的时间如此不同?

    我正在使用 gcc 4 6 1 并且得到一些有趣的行为 涉及调用constexpr功能 这个程序运行得很好并且立即打印出来12200160415121876738 include
  • 如何在 Java 中以编程方式启动和停止 Amazon EC2 实例

    如何启动和停止亚马逊EC2在java中以编程方式使用aws sdk实例 非常感谢任何帮助 因为我花了一天时间试图解决这个问题 我最近在Bamboo AWS 插件 它是开源的并且代码可在 Bitbucket 上找到 您可以找到如何启动 停止
  • 异步 NSURLConnection 抛出 EXC_BAD_ACCESS

    我不太确定为什么我的代码抛出 EXC BAD ACCESS 我遵循了 Apple 文档中的指南 void getMessages NSString stream NSString myURL NSString stringWithForma
  • matplotlib 循环为每个类别绘制子图

    我正在尝试编写一个循环 该循环将生成一个包含 25 个子图的图形 每个国家 1 个子图 我的代码制作了一个包含 25 个子图的图形 但这些图是空的 我可以更改什么以使数据出现在图表中 fig plt figure for c num in
  • std::sort 使用自定义比较器

    在下面的代码中 为什么这三个IntComparator IntComparator2 and IntComparator3作为第三个参数sort 功能 他们不会有不同的左值函数类型吗 基于https en cppreference com
  • java中的单例模式。惰性初始化

    public static MySingleton getInstance if instance null synchronized MySingleton class instance new MySingleton return in
  • Python:变量什么时候通过引用传递,什么时候通过值传递? [复制]

    这个问题在这里已经有答案了 我的代码 locs 1 2 for loc in locs loc print locs prints gt 1 2 Why is loc不是元素的引用locs Python 除非显式复制 否则所有内容都作为引用
  • CPU变量类型

    我在 Visual Studio 中工作时 快乐的小无辜智能感知说有一个名为 cpu 的变量类型 我在网上找不到任何关于它的信息 因为所有谷歌都会返回的是中央处理单元 有谁知道 cpu 变量的作用或存储是什么 cpu 是一个限制说明符 可应
  • 禁用 UIPageViewController 弹跳 - Swift [重复]

    这个问题在这里已经有答案了 我一直在制作一个示例应用程序 在之间滚动UIViewControllers但重点是我想在滚动结束时和返回到第一个时禁用弹跳效果UIViewController 这是我的代码 class PageViewContr
  • 如何获取Celery中失败的任务?

    我正在使用芹菜来处理一些任务 我可以看到有多少是活动的或计划的等 但我无法找到任何方法来查看失败的任务 Flower 确实会向我显示状态 但前提是它在任务启动和失败时正在运行 是否有任何命令可以获取所有失败的任务 状态 失败 创建任务时我确
  • 如何在 Perl 中运行时加载模块?

    是否可以在 Perl 中在运行时加载模块 我尝试了以下方法 但没有成功 我在程序的某个地方写了以下内容 require some module import some module some func some func Foo pm pa
  • 检查 pandas DataFrame 中的 dtype 时的注意事项

    由 来指导this回答 我开始建立管道来根据其数据类型处理数据帧的列 但是在获得一些意外的输出和一些调试之后 我最终得到了测试数据帧和测试数据类型检查 Creating test dataframe test pd DataFrame bo
  • 删除 Chrome/IE9 中的图像边框

    我试图摆脱 Chrome 和 IE9 中每个图像出现的细边框 我有这个CSS outline none border none 使用 jQuery 我还添加了border 0每个图像标签上的属性 但如图所示的边框仍然出现 有什么解决办法吗
  • 实现具有独立行高的多列ListView

    我想创建一个包含大约 200 个 ImageView 随机高度 的列表 并以 拼贴 方式使用以下布局 通常我会在 ListView 中执行此操作 以获得通过使用适配器获得的性能 但因为我希望图像按列显示 并且具有不同的高度 参见图片Exam
  • 如何使用 FPDF/FPDI 获得精确修改后的 PDF?

    我有一个修改 PDF 并向其中添加图像的任务 为此我使用了 FPDF 和 FPDI 库 其操作代码如下
  • 访问 jenkins 共享库代码中的环境变量

    当我使用新的共享库时 我无法访问任何直接由 Jenkinsfile 或通过 var groovy 脚本执行的 src 类的环境变量 即使我添加了这个问题仍然存在withEnv到 var groovy 脚本 让环境变量传播到 jenkins
  • 在 10 分钟内触发活动的简单 AlarmManager 示例

    我发现了很多与此类似的问题 但至少我认为它们太复杂 代码太多 这件事能用几行代码完成吗 我想在 10 比方说 分钟内启动一项活动 仅此而已 谢谢 将闹钟设置为 10 分钟 比方说 使用此代码 AlarmManager alarmMgr Al
  • 如何改变 dplyr 中的 for 循环

    我想为数据框中的列创建多个值范围的滞后变量 我的代码可以成功执行我想要的操作 但无法根据我的需要进行扩展 数百次迭代 我的下面的代码成功地完成了我想要的操作 但无法根据我的需要进行扩展 数百次迭代 Lake Lag lt Lake Cham
  • SparkSQL注册表时MissingRequirementError

    我是 Scala 和 Apache Spark 的新手 我正在尝试使用 Spark SQL 克隆后repo我通过输入启动了 Spark shellbin spark shell并运行以下命令 val sqlContext new org a