【发布时间】:2019-09-30 15:15:18
【问题描述】:
我尝试使用 spark 启动简单的应用程序。我下载了 spark-“pip install spark。现在当我尝试运行我的代码时出现错误:
错误外壳:无法在 hadoop 二进制文件中找到 winutils 二进制文件 路径 java.io.IOException:找不到可执行文件 Hadoop 二进制文件中的 null\bin\winutils.exe。在 org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:379) 在 org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:394) 在 org.apache.hadoop.util.Shell.(Shell.java:387) 在 org.apache.hadoop.util.StringUtils.(StringUtils.java:80) 在 org.apache.hadoop.security.SecurityUtil.getAuthenticationMethod(SecurityUtil.java:611) 在 org.apache.hadoop.security.UserGroupInformation.initialize(UserGroupInformation.java:273) 在 org.apache.hadoop.security.UserGroupInformation.ensureInitialized(UserGroupInformation.java:261) 在 org.apache.hadoop.security.UserGroupInformation.loginUserFromSubject(UserGroupInformation.java:791) 在 org.apache.hadoop.security.UserGroupInformation.getLoginUser(UserGroupInformation.java:761) 在 org.apache.hadoop.security.UserGroupInformation.getCurrentUser(UserGroupInformation.java:634) 在 org.apache.spark.util.Utils$$anonfun$getCurrentUserName$1.apply(Utils.scala:2422) 在 org.apache.spark.util.Utils$$anonfun$getCurrentUserName$1.apply(Utils.scala:2422) 在 scala.Option.getOrElse(Option.scala:121) 在 org.apache.spark.util.Utils$.getCurrentUserName(Utils.scala:2422) 在 org.apache.spark.SecurityManager.(SecurityManager.scala:79) 在 org.apache.spark.deploy.SparkSubmit.secMgr$lzycompute$1(SparkSubmit.scala:359) 在 org.apache.spark.deploy.SparkSubmit.org$apache$spark$deploy$SparkSubmit$$secMgr$1(SparkSubmit.scala:359) 在 org.apache.spark.deploy.SparkSubmit$$anonfun$prepareSubmitEnvironment$7.apply(SparkSubmit.scala:367) 在 org.apache.spark.deploy.SparkSubmit$$anonfun$prepareSubmitEnvironment$7.apply(SparkSubmit.scala:367) 在 scala.Option.map(Option.scala:146) 在 org.apache.spark.deploy.SparkSubmit.prepareSubmitEnvironment(SparkSubmit.scala:366) 在 org.apache.spark.deploy.SparkSubmit.submit(SparkSubmit.scala:143) 在 org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:86) 在 org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:924) 在 org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:933) 在 org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) 19/05/13 22:57:18 WARN NativeCodeLoader: 无法加载 native-hadoop 适合您平台的库...使用内置 java 类,其中 适用 使用 Spark 的默认 log4j 配置文件: org/apache/spark/log4j-defaults.properties 设置默认日志级别 警告”。要调整日志记录级别,请使用 sc.setLogLevel(newLevel)。为了 SparkR,使用 setLogLevel(newLevel)。
好吧,我下载了 winutils.exe,创建了“c:\winutils\bin”并复制了 winutils。还创建了环境路径 HADOOP_HOME。但我不明白为什么它不起作用。 我的代码
from pyspark.shell import sc
os.environ ['HADOOP_HOME']= "C:\\winutils"
lines = sc.textFile("ob.txt")
pythonLines = lines .filter(lambda line: "python" in line)
print(pythonLines)
【问题讨论】: