小编SMa*_*MaZ的帖子

Spark 数据集缓存仅使用一个执行器

我有一个读取 hive(parquet-snappy) 表并构建 2GB 数据集的进程。这是迭代(~ 7K)过程,并且该数据集对于所有迭代都是相同的,因此我决定缓存该数据集。

不知何故,缓存任务仅在一个执行器上完成,并且看起来缓存仅在该一个执行器上。这会导致延迟、OOM 等。

是因为镶木地板吗?如何确保缓存分布在多个执行器上?

这是火花配置:

  1. 执行者:3
  2. 核心:4
  3. 内存:4GB
  4. 分区:200

尝试重新分区和调整配置但没有运气。

hadoop-yarn apache-spark parquet

4
推荐指数
2
解决办法
1443
查看次数

从 PySpark python 中的日期获取工作日名称

我使用此代码从字符串类型的日期返回日期名称:

import Pandas as pd
df = pd.Timestamp("2019-04-10")
print(df.weekday_name)
Run Code Online (Sandbox Code Playgroud)

所以当我有“2019-04-10”时,代码返回“星期三”

我想将它应用于 Pyspark DataFrame 中的一列以获取文本中的日期名称。但它似乎不起作用。

>+-------------+
|Reported Date|
+-------------+
|    1/07/2010|
|    1/07/2010|
|    1/07/2010|
|    1/07/2010|
|    1/07/2010|
|    1/07/2010|
|    1/07/2010|    
+-------------+
Run Code Online (Sandbox Code Playgroud)

我试图这样做:

sparkDF.withColumn("day",weekday_name(pd.Timestamp('Reported Date')))
Run Code Online (Sandbox Code Playgroud)

但我收到错误消息:NameError: name 'weekday_name' is not defined

谁能帮我这个?谢谢

python pyspark

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

标签 统计

apache-spark ×1

hadoop-yarn ×1

parquet ×1

pyspark ×1

python ×1