【问题标题】:Why does starting a streaming query lead to "ExitCodeException exitCode=-1073741515"?为什么启动流式查询会导致“ExitCodeException exitCode=-1073741515”?
【发布时间】:2018-02-07 09:33:40
【问题描述】:

一直在尝试适应新的结构化流式传输,但在我开始 .writeStream 查询时它一直给我以下错误。

知道是什么原因造成的吗?如果您在本地和 HDFS 之间拆分检查点和元数据文件夹,我能找到的最接近的是一个持续的 Spark 错误,但是。在 Windows 10、Spark 2.2 和 IntelliJ 上运行。

17/08/29 21:47:39 ERROR StreamMetadata: Error writing stream metadata StreamMetadata(41dc9417-621c-40e1-a3cb-976737b83fb7) to C:/Users/jason/AppData/Local/Temp/temporary-b549ee73-6476-46c3-aaf8-23295bd6fa8c/metadata
ExitCodeException exitCode=-1073741515: 
    at org.apache.hadoop.util.Shell.runCommand(Shell.java:582)
    at org.apache.hadoop.util.Shell.run(Shell.java:479)
    at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:773)
    at org.apache.hadoop.util.Shell.execCommand(Shell.java:866)
    at org.apache.hadoop.util.Shell.execCommand(Shell.java:849)
    at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:733)
    at org.apache.hadoop.fs.RawLocalFileSystem$LocalFSFileOutputStream.<init>(RawLocalFileSystem.java:225)
    at org.apache.hadoop.fs.RawLocalFileSystem$LocalFSFileOutputStream.<init>(RawLocalFileSystem.java:209)
    at org.apache.hadoop.fs.RawLocalFileSystem.createOutputStreamWithMode(RawLocalFileSystem.java:307)
    at org.apache.hadoop.fs.RawLocalFileSystem.create(RawLocalFileSystem.java:296)
    at org.apache.hadoop.fs.RawLocalFileSystem.create(RawLocalFileSystem.java:328)
    at org.apache.hadoop.fs.ChecksumFileSystem$ChecksumFSOutputSummer.<init>(ChecksumFileSystem.java:398)
    at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:461)
    at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:440)
    at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:911)
    at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:892)
    at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:789)
    at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:778)
    at org.apache.spark.sql.execution.streaming.StreamMetadata$.write(StreamMetadata.scala:76)
    at org.apache.spark.sql.execution.streaming.StreamExecution$$anonfun$6.apply(StreamExecution.scala:116)
    at org.apache.spark.sql.execution.streaming.StreamExecution$$anonfun$6.apply(StreamExecution.scala:114)
    at scala.Option.getOrElse(Option.scala:121)
    at org.apache.spark.sql.execution.streaming.StreamExecution.<init>(StreamExecution.scala:114)
    at org.apache.spark.sql.streaming.StreamingQueryManager.createQuery(StreamingQueryManager.scala:240)
    at org.apache.spark.sql.streaming.StreamingQueryManager.startQuery(StreamingQueryManager.scala:278)
    at org.apache.spark.sql.streaming.DataStreamWriter.start(DataStreamWriter.scala:282)
    at FileStream$.main(FileStream.scala:157)
    at FileStream.main(FileStream.scala)
Exception in thread "main" ExitCodeException exitCode=-1073741515: 
    at org.apache.hadoop.util.Shell.runCommand(Shell.java:582)
    at org.apache.hadoop.util.Shell.run(Shell.java:479)
    at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:773)
    at org.apache.hadoop.util.Shell.execCommand(Shell.java:866)
    at org.apache.hadoop.util.Shell.execCommand(Shell.java:849)
    at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:733)
    at org.apache.hadoop.fs.RawLocalFileSystem$LocalFSFileOutputStream.<init>(RawLocalFileSystem.java:225)
    at org.apache.hadoop.fs.RawLocalFileSystem$LocalFSFileOutputStream.<init>(RawLocalFileSystem.java:209)
    at org.apache.hadoop.fs.RawLocalFileSystem.createOutputStreamWithMode(RawLocalFileSystem.java:307)
    at org.apache.hadoop.fs.RawLocalFileSystem.create(RawLocalFileSystem.java:296)
    at org.apache.hadoop.fs.RawLocalFileSystem.create(RawLocalFileSystem.java:328)
    at org.apache.hadoop.fs.ChecksumFileSystem$ChecksumFSOutputSummer.<init>(ChecksumFileSystem.java:398)
    at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:461)
    at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:440)
    at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:911)
    at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:892)
    at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:789)
    at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:778)
    at org.apache.spark.sql.execution.streaming.StreamMetadata$.write(StreamMetadata.scala:76)
    at org.apache.spark.sql.execution.streaming.StreamExecution$$anonfun$6.apply(StreamExecution.scala:116)
    at org.apache.spark.sql.execution.streaming.StreamExecution$$anonfun$6.apply(StreamExecution.scala:114)
    at scala.Option.getOrElse(Option.scala:121)
    at org.apache.spark.sql.execution.streaming.StreamExecution.<init>(StreamExecution.scala:114)
    at org.apache.spark.sql.streaming.StreamingQueryManager.createQuery(StreamingQueryManager.scala:240)
    at org.apache.spark.sql.streaming.StreamingQueryManager.startQuery(StreamingQueryManager.scala:278)
    at org.apache.spark.sql.streaming.DataStreamWriter.start(DataStreamWriter.scala:282)
    at FileStream$.main(FileStream.scala:157)
    at FileStream.main(FileStream.scala)
17/08/29 21:47:39 INFO SparkContext: Invoking stop() from shutdown hook
17/08/29 21:47:39 INFO SparkUI: Stopped Spark web UI at http://192.168.178.21:4040
17/08/29 21:47:39 INFO MapOutputTrackerMasterEndpoint: MapOutputTrackerMasterEndpoint stopped!
17/08/29 21:47:39 INFO MemoryStore: MemoryStore cleared
17/08/29 21:47:39 INFO BlockManager: BlockManager stopped
17/08/29 21:47:39 INFO BlockManagerMaster: BlockManagerMaster stopped
17/08/29 21:47:39 INFO OutputCommitCoordinator$OutputCommitCoordinatorEndpoint: OutputCommitCoordinator stopped!
17/08/29 21:47:39 INFO SparkContext: Successfully stopped SparkContext
17/08/29 21:47:39 INFO ShutdownHookManager: Shutdown hook called
17/08/29 21:47:39 INFO ShutdownHookManager: Deleting directory C:\Users\jason\AppData\Local\Temp\temporary-b549ee73-6476-46c3-aaf8-23295bd6fa8c
17/08/29 21:47:39 INFO ShutdownHookManager: Deleting directory C:\Users\jason\AppData\Local\Temp\spark-117ed625-a588-4dcb-988b-2055ec5fa7ec

Process finished with exit code 1

【问题讨论】:

  • 从 IDE 的控制台中,查询只是为了测试它是否可以工作。我会尝试 checkpointLocation 选项,C: 上的任何内容我猜应该这样做吗?顺便说一句,您的 github 页面非常棒。喜欢解释和例子,很棒的细节! val query = fileStreamDf.writeStream .format("console") .outputMode(OutputMode.Append()).start() query.awaitTermination()
  • 修复了! mscvr100.dll 已损坏,重新安装解决了该问题,并且查询现在以流模式启动。
  • -1073741515 == 0xC0000135 == STATUS_DLL_NOT_FOUND,“程序无法启动,因为您的计算机缺少 %hs。请尝试重新安装程序以解决此问题”。标准 DLL Hell 问题,启用加载程序快照或使用 SysInternals 的进程监视器找出缺少的 DLL。

标签: windows apache-spark spark-structured-streaming


【解决方案1】:

实际上,我在本地机器上运行 Spark 单元测试时遇到了同样的问题。这是由 %HADOOP_HOME% 文件夹中的失败 WinUtils.exe 引起的:

输入: %HADOOP_HOME%\bin\winutils.exe chmod 777 %SOME_TEMP_DIRECTORY%

输出:

winutils.exe - 系统错误
由于未找到 MSVCR100.dll,无法继续执行代码。
重新安装程序可能会解决此问题。

在网上冲浪后,我发现了 Steve Loughran 的 winutils 项目的一个问题:Windows 10: winutils.exe doesn't work
特别是它说安装 VC++ 可再发行包应该可以解决问题(这在我的情况下有效):How do I fix this error "msvcp100.dll is missing"

【讨论】:

    【解决方案2】:

    这是一个窗口问题

    程序无法启动,因为您的计算机中缺少 MSVCP100.dll。尝试重新安装程序以解决此问题。

    您需要安装 VC++ 可再发行包:

    • 从微软官方下载中心下载 Microsoft Visual C++ 2010 Service Pack 1 Redistributable Package

    https://www.microsoft.com/en-au/download/details.aspx?id=26999

    下载提供了 x86 和 x64 软件包的选项。

    【讨论】:

      【解决方案3】:

      在我的情况下,我使用的是 Windows 10,并且必须更改 环境变量-> 用户变量

      TMPTEMP 到其他卷(D:\Temp 或 E:\Temp 等)中的自定义位置,而不是默认位置

      %USERPROFILE%\AppData\Local\Temp

      同时设置HADOOP_HOME

      System.setProperty("hadoop.home.dir", "$HADOOP_HOME\winutils-master\hadoop-2.x.x")

      不要忘记将 hadoop.dll 复制到 C:\Windows\System32

      您可以从此链接下载相应的版本。 DOWNLOAD WINUTILS.exe

      对我来说 hadoop-2.7.1 版本解决了这个问题。

      【讨论】:

        【解决方案4】:

        我在将 DataFrame 转换为 Parquet 文件时遇到的问题。它将创建目录,但失败并显示“ExitCodeException exitCode=-1073741515”。

        我在 Windows 10(2004 版)上从 Intellij 2020.2.2 x64 运行 Spark。我在我的 C 盘上的 GitBash 中安装了 spark-3.0.1-bin-hadoop3.2。在从这个 repo https://github.com/steveloughran/winutils 重定向后,我从这个 Github repo https://github.com/cdarlint/winutils 下载了 winutils。

        我将它们安装在 C:\winutils 目录(顶级)中,该目录包含一个名为 /bin/ 的子目录,其中包含 winutil.exe 和相关文件。此顶级路径作为 Windows 环境变量添加到名为 HADOOP_HOME 的系统变量中。我还有一个 SPARK_HOME 到 C:\Users\name\spark-3.0.1-bin-hadoop3.2\

        的变量

        我收到了这个错误,直到我找到了这个 SO 帖子和上面 Moises Trelles 的答案,还有这个页面 https://answers.microsoft.com/en-us/insider/forum/insider_wintp-insider_repair/how-do-i-fix-this-error-msvcp100dll-is-missing/c167d686-044e-44ab-8e8f-968fac9525c5?auth=1

        我有一个 64 位系统,因此按照 answers.microsoft.com 答案中的建议安装了 x86 和 x64 版本的 msvcp100.dll。我没有重新启动,但我确实关闭了 Intellij 并重新加载,并在重新运行时生成了正确的输出(镶木地板文件)。祝你好运!我非常感谢 stackoverflow/google/internet/community 的乐于助人的人。

        【讨论】:

          【解决方案5】:

          正如其他人所指出的,WinUtils 似乎依赖于一个名为 msvcr100.dll 的文件,该文件包含在 Microsoft Visual C++ 2010 Redistributable Package 中。

          ExitCodeExceptionexitCode= -1073741515 表明您的计算机上不存在 mscvr100.dll 文件,因此,WinUtils 无法正常工作。

          要解决此问题,请从以下位置安装可再发行包(带有 Service Pack 1):

          Microsoft Download Center

          请注意,可再分发的更高版本(例如 2012、2013 ...)似乎不包含所需的 msvcr100.dll 文件。

          【讨论】:

            【解决方案6】:

            我已经通过安装解决了这个问题 https://www.microsoft.com/en-au/download/details.aspx?id=26999 然后复制 hadoop.dll 和 winutils.exe

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2015-08-26
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多