Hadoop bin目录不存在



程序:

spark = SparkSession.builder.getOrCreate()
spark.sql("CREATE DATABASE icebergdb2")
spark.sql("USE icebergdb2")
schema = StructType([
StructField("vendor_id", LongType(), True),
StructField("trip_id", LongType(), True),
StructField("trip_distance", FloatType(), True),
StructField("fare_amount", DoubleType(), True),
StructField("store_and_fwd_flag", StringType(), True)
])
spark.sql("CREATE TABLE icebergdb2.iceberg_table (vendor_id LONG, trip_id LONG, trip_distance FLOAT, fare_amount DOUBLE, store_and_fwd_flag STRING) USING iceberg")

在执行上述程序时出现此错误:

WARN Shell: Did not find winutils.exe: java.io.FileNotFoundException: Hadoop bin directory does not exist: C:UsersabcDesktopicehadoop-3.3.1etchadoopbin -see https://wiki.apache.org/hadoop/WindowsProblems
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Traceback (most recent call last):
File "C:UsersabcDesktopiceice.py", line 24, in <module>
spark.sql("CREATE TABLE icebergdb2.iceberg_table 
File "C:Usersabcanaconda3libsite-packagespysparksqlsession.py", line 1034, in sql
return DataFrame(self._jsparkSession.sql(sqlQuery), self)
File "C:Usersabcanaconda3libsite-packagespy4jjava_gateway.py", line 1321, in __call__
return_value = get_return_value(
File "C:Usersabcanaconda3libsite-packagespysparksqlutils.py", line 190, in deco
return f(*a, **kw)  
PS C:UsersabcDesktopice> SUCCESS: The process with PID 1204 (child process of PID 8780) has been terminated.
SUCCESS: The process with PID 8780 (child process of PID 14136) has been terminated.
SUCCESS: The process with PID 14136 (child process of PID 14132) has been terminated.

使用Apache Spark创建Apache冰山表。

欢迎使用Stackoverflow!

看起来您正在尝试在windows上运行Spark。为此,您需要一个名为";winutils";。在错误消息中,您可以看到Did not find winutils.exe: java.io.FileNotFoundException: Hadoop bin directory does not exist

让我们看看你必须采取哪些步骤才能在你的电脑上正确运行Spark实例:

  1. 下载使用Hadoop预构建的Spark。例如,spark-3.3.1-bin-hadoop3.tgz
  2. 提取此文件,并将提取的文件夹复制到您希望它结束的位置。例如,C:Spark
  3. 制作一个名为SPARK_HOME的环境变量,并将其指向刚刚提取和移动的文件夹(点2的C:Spark)
  4. %SPARK_HOME%/bin添加到PATH环境变量中。这使您能够运行类似spark-submitspark-shell的spark命令

现在您已经安装了Spark!为了让它在Windows上正常运行,我们现在需要让这个winutils工具发挥作用:

  1. 从本网站下载winutils.exehadoop.dll。由于这些都是在64位JVM上预编译的,因此必须确保安装了64位JDK。如果你愿意的话,你当然可以使用其他的,这里只举一个例子
  2. 将它们移到您喜欢的某个文件夹,位于名为bin的文件夹中。例如,C:hadoopbin
  3. 使HADOOP_HOME环境变量,并将其指向您放入2个文件的bin文件夹的父文件夹。在上一个示例中,它将是C:hadoop
  4. %HADOOP_HOME%/bin添加到PATH环境变量中
  5. 启动一个新的终端会话(gitbash、powershell、cmd…)

当你完成了所有这些事情后,你的问题就应该解决了!

希望这有帮助:)

相关内容

  • 没有找到相关文章

最新更新