在Windows 10上安装Apache Spark
由于各种功能无法使用,因此我需要备忘录记录下来。
前提
在中国,以中文为母语的情况下,只需提供一个选项:
安装 Apache Spark。
下载 spark-3.4.1-bin-hadoop3.tgz 文件并在任意文件夹中解压
将解压后的文件夹路径添加为 SPARK_HOME 环境变量
Hadoop 的安装
下载hadoop-3.3.0.tar.gz,并在任意文件夹中解压。
由于使用7-zip出现错误(可能只是我想象的),所以使用命令进行解压。
tar -xvzf hadoop-3.3.0.tar.gz -C 解凍先フォルダ
將解凍的文件夾路徑設置為 HADOOP_HOME,並將其添加到環境變量中。
Java 安装
有一些功能似乎需要将 JAVA_HOME 添加到环境变量中才能正常工作。例如,如果将 spark_df=pyspark.sql.dataframe.DataFrame ,那么 spark_df.write 就是一个例子。
安装winutils
从Git中签出
git clone https://github.com/ruslanmv/How-to-install-Hadoop-on-Windows.git
将”How-to-install-Hadoop-on-Windows\winutils\bin”复制到HADOOP_HOME(覆盖bin文件夹)。
让路径通畅
假设Java已经配置好,将以下路径添加到path中:
SPARK_HOME\bin
HADOOP_HOME\bin
确认
Apache Spark是一个开源的大数据处理框架。
spark-submit --version
Hadoop – 哈多普
hadoop version
遇到无法动作的情况时的应对措施。
在PySpark中执行show()函数时出现了SocketTimeoutException异常。
错误内容 (Incorrect content)
Py4JJavaError: An error occurred while calling o44.showString.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 0.0 failed 1 times, most recent failure: Lost task 0.0 in stage 0.0 (TID 0) (2112N-14046.jp.misumi.pri executor driver): org.apache.spark.SparkException: Python worker failed to connect back.
<-- 中略 -->
Caused by: java.net.SocketTimeoutException: Accept timed out
对策:添加以下内容
import findspark
findspark.init()
findspark.find()
在执行 to_pandas() 时发生 UnknownTimeZoneError 错误。
错误内容 (Error content)
UnknownTimeZoneError Traceback (most recent call last) Input In [43], in <cell line: 1>() ----> 1 df_pandas = spark_df.toPandas()
解决方案:在创建Spark会话时指定时区
spark = SparkSession.builder.appName("アプリ名").config("spark.sql.session.timeZone", "Asia/Tokyo").getOrCreate()
请参考