我需要使用Spark SQL从Hive表加载数据HiveContext并加载到HDFS中.默认情况下,DataFramefrom SQL输出有2个分区.为了获得更多的并行性,我需要更多的SQL分区.HiveContext中没有重载方法来获取分区数参数.
RDD的重新分区导致改组并导致更多的处理时间.
>
val result = sqlContext.sql("select * from bt_st_ent")
Run Code Online (Sandbox Code Playgroud)
有日志输出:
Starting task 0.0 in stage 131.0 (TID 297, aster1.com, partition 0,NODE_LOCAL, 2203 bytes)
Starting task 1.0 in stage 131.0 (TID 298, aster1.com, partition 1,NODE_LOCAL, 2204 bytes)
Run Code Online (Sandbox Code Playgroud)
我想知道有没有办法增加SQL输出的分区大小.
scala> val p=sc.textFile("file:///c:/_home/so-posts.xml", 8) //i've 8 cores
p: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[56] at textFile at <console>:21
scala> p.partitions.size
res33: Int = 729
Run Code Online (Sandbox Code Playgroud)
我希望打印8个,我在Spark UI中看到729个任务
编辑:
打完电话后repartition(),通过@ zero323建议
scala> p1 = p.repartition(8)
scala> p1.partitions.size
res60: Int = 8
scala> p1.count
Run Code Online (Sandbox Code Playgroud)
我仍然在Spark UI中看到729个任务,即使spark-shell打印8个.