相关疑难解决方法(0)

如何在pyspark中将Dataframe列从String类型更改为Double类型

我有一个数据框,列为String.我想在PySpark中将列类型更改为Double类型.

以下是方式,我做了:

toDoublefunc = UserDefinedFunction(lambda x: x,DoubleType())
changedTypedf = joindf.withColumn("label",toDoublefunc(joindf['show']))
Run Code Online (Sandbox Code Playgroud)

只是想知道,这是通过Logistic回归运行的正确方法,我遇到了一些错误,所以我想知道,这是问题的原因.

python dataframe apache-spark apache-spark-sql pyspark

74
推荐指数
4
解决办法
16万
查看次数

具有不同窗口规格的链式火花列表达式会产生低效的 DAG

语境

假设您处理时间序列数据。您想要的结果依赖于具有不同窗口规格的多个窗口函数。结果可能类似于单个火花列表达式,例如间隔标识符。

现状

通常,我不使用df.withColumn链式/堆栈列表达式来存储中间结果,并且相信 Spark 会找到最有效的 DAG(在处理 DataFrame 时)。

可重现的例子

但是,在以下示例(PySpark 2.4.4 独立版)中,存储中间结果df.withColumn降低了 DAG 的复杂性。让我们考虑以下测试设置:

import pandas as pd
import numpy as np

from pyspark.sql import SparkSession, Window
from pyspark.sql import functions as F

spark = SparkSession.builder.getOrCreate()

dfp = pd.DataFrame(
    {
        "col1": np.random.randint(0, 5, size=100),
        "col2": np.random.randint(0, 5, size=100),
        "col3": np.random.randint(0, 5, size=100),
        "col4": np.random.randint(0, 5, size=100),        
    }
)

df = spark.createDataFrame(dfp)
df.show(5)
Run Code Online (Sandbox Code Playgroud)
import pandas as pd
import numpy as np

from pyspark.sql import SparkSession, Window …
Run Code Online (Sandbox Code Playgroud)

python dataframe directed-acyclic-graphs apache-spark pyspark

9
推荐指数
1
解决办法
229
查看次数

PySpark 数据帧何时使用 .select() 与何时使用 .withColumn()?

我是 PySpark 的新手,我发现有两种方法可以在 PySpark 中选择列,即使用“.select()”或“.withColumn()”。

据我所知,“.withColumn()”的性能较差,但除此之外,我很困惑为什么有两种方法可以做同样的事情。

那么我什么时候应该使用“.select()”而不是“.withColumn()”?

我用谷歌搜索过这个问题,但没有找到明确的解释。

python pyspark

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

如何使用 SCALA 在火花数据框中添加多列

我有一个条件,我必须在一年的 5 个月内添加 5 列(到现有的 DF)。

现有的 DF 是这样的:

EId EName Esal
1   abhi  1100
2   raj   300
3   nanu  400
4   ram   500
Run Code Online (Sandbox Code Playgroud)

输出应如下所示:

EId EName Esal Jan  Feb  March April May  
1   abhi  1100 1100 1100 1100  1100  1100 
2   raj   300  300  300  300   300   300  
3   nanu  400  400  400  400   400   400
4   ram   500  500  500  500   500   500
Run Code Online (Sandbox Code Playgroud)

我可以用 withColumn 一一完成,但这需要很多时间。

有没有办法可以运行一些循环并继续添加列,直到我的条件用尽。

提前谢谢了。

scala dataframe apache-spark

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