PySpark - 遍历每一行数据帧并运行配置单元查询

Posted

技术标签:

【中文标题】PySpark - 遍历每一行数据帧并运行配置单元查询【英文标题】:PySpark - loop through each row of dataframe and run a hive query 【发布时间】:2017-09-18 17:46:38 【问题描述】:

我有一个包含 100 行 [姓名、年龄、日期、小时] 的数据框。我需要用不同的日期值对这个数据框进行分区。假设这 100 行中有 20 个不同的日期值,那么我需要生成 20 个并行配置单元查询,其中每个配置单元 QL 将使用配置单元表连接每个分区。 Hive 表 - [dept, couse, date] 按日期字段分区。

Hive 表很大,因此我需要将这些连接优化为多个较小的连接,然后汇总这些结果。关于如何实现这一目标的任何建议?

【问题讨论】:

您能否提供具有预期输出的示例数据?您应该考虑只进行一次连接并广播您的 100 行数据帧 【参考方案1】:

您可以在单个查询中执行此操作。在日期和加入时对 df 进行分区。在加入广播期间,您的第一个表具有小数据(~10MB)。这是示例:-

df3 = df1.repartition("date").join(
F.broadcast(df2.repartition("date")), 
"date"
)
#df2 is your dataframe smaller dataframe in your case it is name, age, date, ,hour.
#Now perform any operation on df3  

【讨论】:

以上是关于PySpark - 遍历每一行数据帧并运行配置单元查询的主要内容,如果未能解决你的问题,请参考以下文章

将用户定义的函数应用于 PySpark 数据帧并返回字典

通过 pyspark 数据框创建配置单元管理的分区表并为每个运行附加数据

遍历 pyspark 数据框中的列,而不为单个列创建不同的数据框

在同一会话上从 pyspark 运行多个配置单元查询

pyspark 数据框为每一行获得第二低的值

为 pyspark 数据帧的每一行评估多个 if elif 条件