我有一个读取 hive(parquet-snappy) 表并构建 2GB 数据集的进程。这是迭代(~ 7K)过程,并且该数据集对于所有迭代都是相同的,因此我决定缓存该数据集。
不知何故,缓存任务仅在一个执行器上完成,并且看起来缓存仅在该一个执行器上。这会导致延迟、OOM 等。
是因为镶木地板吗?如何确保缓存分布在多个执行器上?
这是火花配置:
尝试重新分区和调整配置但没有运气。
我使用此代码从字符串类型的日期返回日期名称:
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
谁能帮我这个?谢谢