Apache spark 从HiveContext创建的PySpark分区数据帧

Apache spark 从HiveContext创建的PySpark分区数据帧,apache-spark,pyspark,partitioning,Apache Spark,Pyspark,Partitioning,我正在从HiveContext获取数据并创建DataFrame。为了获得性能优势,我希望在应用联接操作之前对DF进行分区。如何在“ID”列上分配数据,然后在“ID”列上应用联接 spark = SparkSession.builder.enableHiveSupport().getOrCreate() hiveCtx = HiveContext(spark) df1 = hiveCtx.sql("select id,name,address from db.table1")

我正在从HiveContext获取数据并创建DataFrame。为了获得性能优势,我希望在应用联接操作之前对DF进行分区。如何在“ID”列上分配数据,然后在“ID”列上应用联接

spark = SparkSession.builder.enableHiveSupport().getOrCreate()
hiveCtx = HiveContext(spark)
df1 = hiveCtx.sql("select id,name,address from db.table1")
df2 = hiveCtx.sql("select id,name,marks from db.table2")
需要对数据执行以下操作

数据帧按“ID”分区 以“ID”加入
您可以使用重新分区

df1= df1.repartition(7, "id")
请参阅spark文档:

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

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

此操作只是重新分区我的数据,或者在对我的数据集执行联接时,将有优化的联接条件。也就是说,它将只引用id=1的特定分区,而不是遍历整个数据?因为partitionBy将我的数据划分到目录结构中的磁盘上,但重新划分不会。