两周以来,我一直在尝试在我的 Windows 10 计算机上安装 Spark (pyspark),现在我意识到我需要您的帮助。
当我尝试在命令提示符中启动“pyspark”时,我仍然收到以下错误:
“pyspark”不被识别为内部或外部命令、可操作程序或批处理文件。
对我来说,这暗示路径/环境变量有问题,但我找不到问题的根源。
我尝试过多种教程,但我发现最好的是Michael Galarnyk的教程。我按照他的教程一步步进行:
从官方网站下载了Spark 2.3.1(我相应地更改了命令,因为Michael的教程使用了不同的版本)。我按照cmd提示符中的教程移动了它:
mv C:\Users\patri\Downloads\spark-2.3.1-bin-hadoop2.7.tgz C:\opt\spark\spark-2.3.1-bin-hadoop2.7.tgz
Run Code Online (Sandbox Code Playgroud)
然后我解压它:
gzip -d spark-2.3.1-bin-hadoop2.7.tgz
Run Code Online (Sandbox Code Playgroud)
和
tar xvf spark-2.3.1-bin-hadoop2.7.tar
Run Code Online (Sandbox Code Playgroud)从Github下载 Hadoop 2.7.1 :
curl -k -L -o winutils.exe https://github.com/steveloughran/winutils/raw/master/hadoop-2.7.1/bin/winutils.exe?raw=true
Run Code Online (Sandbox Code Playgroud)相应地设置我的环境变量:
setx SPARK_HOME C:\opt\spark\spark-2.3.1-bin-hadoop2.7
setx HADOOP_HOME C:\opt\spark\spark-2.3.1-bin-hadoop2.7
setx PYSPARK_DRIVER_PYTHON jupyter
setx PYSPARK_DRIVER_PYTHON_OPTS notebook
Run Code Online (Sandbox Code Playgroud)
然后将C:\opt\spark\spark-2.3.1-bin-hadoop2.7\bin添加到我的路径变量中。我的环境用户变量现在看起来像这样: 当前环境变量
这些操作应该可以解决问题,但是当我运行时pyspark --master local[2],我仍然收到上面的错误。您可以使用上面的信息帮助追踪此错误吗?
我在命令提示符中运行了一些检查来验证以下内容:
当我尝试使用 spark 导入本地 CSV 时,默认情况下每列都作为字符串读入。但是,我的列仅包含整数和时间戳类型。更具体地说,CSV 如下所示:
"Customer","TransDate","Quantity","PurchAmount","Cost","TransID","TransKey"
149332,"15.11.2005",1,199.95,107,127998739,100000
Run Code Online (Sandbox Code Playgroud)
我找到了应该在这个问题中工作的代码,但是当我执行它时,所有条目都返回为NULL.
我使用以下内容来创建自定义架构:
from pyspark.sql.types import LongType, StringType, StructField, StructType, BooleanType, ArrayType, IntegerType, TimestampType
customSchema = StructType(Array(
StructField("Customer", IntegerType, true),
StructField("TransDate", TimestampType, true),
StructField("Quantity", IntegerType, true),
StructField("Cost", IntegerType, true),
StructField("TransKey", IntegerType, true)))
Run Code Online (Sandbox Code Playgroud)
然后在 CSV 中读取:
myData = spark.read.load('myData.csv', format="csv", header="true", sep=',', schema=customSchema)
Run Code Online (Sandbox Code Playgroud)
返回:
+--------+---------+--------+----+--------+
|Customer|TransDate|Quantity|Cost|Transkey|
+--------+---------+--------+----+--------+
| null| null| null|null| null|
+--------+---------+--------+----+--------+
Run Code Online (Sandbox Code Playgroud)
我错过了关键的一步吗?我怀疑日期列是问题的根源。注意:我在 GoogleCollab 中运行它。
我正在尝试在 R 中运行联合显着性检验:
library(car)
data("mtcars")
mylm <- lm(mpg ~ qsec + gear + am + am:qsec + am:hp, data=mtcars)
linearHypothesis(mylm, c("am + am:qsec + am:hp"))
Run Code Online (Sandbox Code Playgroud)
但我总是会遇到这个错误:
Error in constants(lhs, cnames_symb) :
The hypothesis "am + am:qsec + am:hp" is not well formed: contains bad coefficient/variable names.
Run Code Online (Sandbox Code Playgroud)
我想测试的是是否
上午 + 上午:qsec + 上午:hp = 0
我在文档中找到了如何测试所有交互项:
linearHypothesis(mylm, matchCoefs(mylm, ":"), verbose=TRUE)
Run Code Online (Sandbox Code Playgroud)
但我想一起测试交互项和级别项。这可能吗?