我尝试用spark启动简单的应用程序。我下载了spark-“ pip install 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 WARN NativeCodeLoader:无法加载本地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)
答案 0 :(得分:1)
您应该采取的几个步骤:(对于Hadoop和Spark)
尝试使用findspark(https://github.com/minrk/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 ''')