小编Pat*_*tig的帖子

如何解决 Windows 上的“pyspark”无法识别...错误?

两周以来,我一直在尝试在我的 Windows 10 计算机上安装 Spark (pyspark),现在我意识到我需要您的帮助。

当我尝试在命令提示符中启动“pyspark”时,我仍然收到以下错误:

问题

“pyspark”不被识别为内部或外部命令、可操作程序或批处理文件。

对我来说,这暗示路径/环境变量有问题,但我找不到问题的根源。

我的行动

我尝试过多种教程,但我发现最好的是Michael Galarnyk的教程。我按照他的教程一步步进行:

  • 安装的Java
  • 安装了 Anaconda
  • 从官方网站下载了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],我仍然收到上面的错误。您可以使用上面的信息帮助追踪此错误吗?

支票

我在命令提示符中运行了一些检查来验证以下内容:

  • Java已安装
  • 蟒蛇已安装
  • 点已安装
  • Python已安装

python apache-spark pyspark

7
推荐指数
1
解决办法
2万
查看次数

使用正确的数据类型在 Pyspark 中读取 CSV

当我尝试使用 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 中运行它。

csv pyspark pyspark-sql

5
推荐指数
1
解决办法
2303
查看次数

与交互项的联合显着性测试:包含错误的系数/变量名称

我正在尝试在 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)

但我想一起测试交互项和级别项。这可能吗?

r significance linear-regression

3
推荐指数
1
解决办法
3914
查看次数