从HiveContext创建的PySpark分区数据框

问题描述

我正在从HiveContext提取数据并创建DataFrame。为了获得性能上的好处,我想在应用联接操作之前对DF进行分区。如何在“ ID”列上对数据进行分区,然后在“ ID”上应用Join

spark = SparkSession.builder.enableHiveSupport().getorCreate()
hiveCtx = HiveContext(spark)
df1 = hiveCtx.sql("select id,name,address from db.table1")
df2 = hiveCtx.sql("select id,marks from db.table2")

需要对数据执行以下操作

  1. 数据帧分区按“ ID”
  2. 通过“ ID”加入

解决方法

您可以使用重新分区。

请参阅spark文档:https://spark.apache.org/docs/latest/api/python/pyspark.sql.html?highlight=repartition#pyspark.sql.DataFrame.repartition

根据您的数据大小,选择分区号。

df1= df1.repartition(7,"id")