相关疑难解决方法(0)

Spark功能与UDF性能有关?

Spark现在提供可在数据帧中使用的预定义函数,并且它们似乎已经过高度优化.我最初的问题是更快,但我自己做了一些测试,发现至少在一个实例中,spark函数的速度提高了大约10倍.有谁知道为什么会这样,什么时候udf会更快(仅适用于存在相同spark函数的情况)?

这是我的测试代码(在Databricks社区上运行):

# UDF vs Spark function
from faker import Factory
from pyspark.sql.functions import lit, concat
fake = Factory.create()
fake.seed(4321)

# Each entry consists of last_name, first_name, ssn, job, and age (at least 1)
from pyspark.sql import Row
def fake_entry():
  name = fake.name().split()
  return (name[1], name[0], fake.ssn(), fake.job(), abs(2016 - fake.date_time().year) + 1)

# Create a helper function to call a function repeatedly
def repeat(times, func, *args, **kwargs):
    for _ in xrange(times):
        yield func(*args, **kwargs)
data = list(repeat(500000, fake_entry))
print …
Run Code Online (Sandbox Code Playgroud)

performance user-defined-functions apache-spark apache-spark-sql pyspark

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

Spark:数据框中的zipwithindex equivelant

假设我有以下数据帧:

dummy_data = [('a',1),('b',25),('c',3),('d',8),('e',1)]
df = sc.parallelize(dummy_data).toDF(['letter','number'])
Run Code Online (Sandbox Code Playgroud)

我想创建以下数据帧:

[('a',0),('b',2),('c',1),('d',3),('e',0)]
Run Code Online (Sandbox Code Playgroud)

我所做的是将其转换为rdd使用zipWithIndex函数并在加入结果后:

convertDF = (df.select('number')
              .distinct()
              .rdd
              .zipWithIndex()
              .map(lambda x:(x[0].number,x[1]))
              .toDF(['old','new']))


finalDF = (df
            .join(convertDF,df.number == convertDF.old)
            .select(df.letter,convertDF.new))
Run Code Online (Sandbox Code Playgroud)

是否存在与zipWIthIndex数据帧类似的功能?还有另一种更有效的方法来完成这项任务吗?

python apache-spark pyspark spark-dataframe

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

Pyspark向数据帧添加顺序和确定性索引

我需要使用三个非常简单的约束将索引列添加到数据框:

  • 从0开始

  • 是顺序的

  • 确定性的

我确定我遗漏了一些明显的东西,因为对于这样一个简单的任务,或者使用非顺序,不确定性越来越单调的id,我发现的示例看起来非常复杂。我不想使用index压缩,然后不得不将以前分开的列现在分开放在单列中,因为我的数据帧在TB中,这似乎是不必要的。我不需要按任何分区,也不需要按任何顺序进行分区,而我所找到的示例可以做到这一点(使用窗口函数和row_number)。我需要的只是一个简单的0到df.count整数序列。我在这里想念什么?

12345

indexing pyspark

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