程序:
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实例:
- 下载使用Hadoop预构建的Spark。例如,
spark-3.3.1-bin-hadoop3.tgz
- 提取此文件,并将提取的文件夹复制到您希望它结束的位置。例如,
C:Spark
- 制作一个名为
SPARK_HOME
的环境变量,并将其指向刚刚提取和移动的文件夹(点2的C:Spark
) - 将
%SPARK_HOME%/bin
添加到PATH
环境变量中。这使您能够运行类似spark-submit
和spark-shell
的spark命令
现在您已经安装了Spark!为了让它在Windows上正常运行,我们现在需要让这个winutils工具发挥作用:
- 从本网站下载
winutils.exe
和hadoop.dll
。由于这些都是在64位JVM上预编译的,因此必须确保安装了64位JDK。如果你愿意的话,你当然可以使用其他的,这里只举一个例子 - 将它们移到您喜欢的某个文件夹,位于名为
bin
的文件夹中。例如,C:hadoopbin
- 使
HADOOP_HOME
环境变量,并将其指向您放入2个文件的bin文件夹的父文件夹。在上一个示例中,它将是C:hadoop
- 将
%HADOOP_HOME%/bin
添加到PATH
环境变量中 - 启动一个新的终端会话(gitbash、powershell、cmd…)
当你完成了所有这些事情后,你的问题就应该解决了!
希望这有帮助:)