Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 错误Shell:未能在hadoop二进制路径中找到winutils二进制文件_Python_Pyspark - Fatal编程技术网

Python 错误Shell:未能在hadoop二进制路径中找到winutils二进制文件

Python 错误Shell:未能在hadoop二进制路径中找到winutils二进制文件,python,pyspark,Python,Pyspark,我尝试用spark启动简单的应用程序。我下载了spark-“pip安装spark。现在,当我尝试运行我的代码时,出现错误: 错误Shell:在hadoop二进制文件中找不到winutils二进制文件 路径java.io.IOException:找不到可执行文件 Hadoop二进制文件中的null\bin\winutils.exe。位于 org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:379)位于 org.apache.had

我尝试用spark启动简单的应用程序。我下载了spark-“pip安装spark。现在,当我尝试运行我的代码时,出现错误:

错误Shell:在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警告NativeCodeLoader:无法加载本机hadoop 用于平台的库…使用内置java类,其中 使用Spark的默认log4j配置文件适用: org/apache/spark/log4j-defaults.properties设置默认日志级别 要“警告”。要调整日志记录级别,请使用sc.setLogLevel(newLevel)。例如 SparkR,使用setLogLevel(newLevel)

嗯,我下载了winutils.exe,创建了“c:\winutils\bin”并复制了winutils。还创建了环境路径HADOOP\u 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)

您应该具备的几个步骤:(对于Hadoop和Spark)

  • 将winutils.exe添加到SPARK_HOME/bin
  • hadoop_HOME/bin中的hadoop.dll和winutils.exe
  • 添加到系统路径:%HADOOP\u HOME%\bin和%SPARK\u HOME%\bin
尝试使用findspark()并将其作为测试运行:

import findspark
findspark.init("C:\Spark\spark-2.3.3-bin-hadoop2.7") #wherever your Spark directory is
import pyspark # only run after findspark.init()
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
df = spark.sql('''select 'spark' as hello ''')