Scala 在spark中串联蜂巢模拟物

Scala 在spark中串联蜂巢模拟物,scala,apache-spark,hive,Scala,Apache Spark,Hive,我有一个spark任务,它在配置单元中创建一个结果表,并从其他表加载数据。 该作业每天都在执行,并在HDFS上生成大量文件。 当我使用Hive时,我编写了一个脚本:altertablequality\u of\u service\u1 concatenate implicit val spark: SparkSession = SparkSession .builder() .enableHiveSupport() .appName("Test") .getOrC

我有一个spark任务,它在配置单元中创建一个结果表,并从其他表加载数据。 该作业每天都在执行,并在HDFS上生成大量文件。 当我使用Hive时,我编写了一个脚本:altertablequality\u of\u service\u1 concatenate

implicit val spark: SparkSession = SparkSession
    .builder()
    .enableHiveSupport()
    .appName("Test")
    .getOrCreate()


  def build(implicit session: SparkSession, config: Config): Unit = {
    import session.implicits._
    loadData
      .flatMap(Item.buildInternal(_, config))
      .write
      .mode(SaveMode.Overwrite)
      .format("orc")
      .saveAsTable(s"${config.schema}.result_table")
  }
你能写下如何合并这些文件以及在哪里调音吗?配置HDFS、spark或spark会话的Shell脚本

配置:

--deploy-mode cluster \
--conf spark.rpc.message.maxSize=300 \
--conf spark.rdd.compress=true \
--conf spark.default.parallelism=1009 \
--conf spark.sql.shuffle.partitions=1009 \
--conf spark.sql.autoBroadcastJoinThreshold=31457280 \
--conf spark.dynamicAllocation.enabled=true \
--conf spark.shuffle.service.enabled=true \
--conf spark.dynamicAllocation.initialExecutors=1200 \
--conf spark.dynamicAllocation.minExecutors=400 \
--conf spark.dynamicAllocation.maxExecutors=1200 \
--conf spark.sql.files.maxPartitionBytes=1073741824 \
--executor-cores 3 \
--executor-memory 7g \
--driver-memory 4g \

在spark2中,一个参数控制一个分区的大小。。。因此,当您“保存”时,文件的数量将减少。 因此,增加参数以减少分区和文件数量 例如,每个分区一个千兆字节
val maxSplit=1024*1024*1024
spark.conf.set(“spark.sql.files.maxPartitionBytes”,maxSplit)

谢谢您的回答,我尝试在.sh文件中使用此配置,但得到了近6000个4.5MB的文件。但在执行alter table result_table CONTAINE之后,我得到了将近150个450MB的文件。spark-sql_2.11版本是2.0.2。你能写下我做错了吗?用完整配置更新了问题。@Vad您希望的大小是多少?从200到1000mb。为什么驱动程序需要4g?为什么初始执行者等于最大值?驱动者和初始执行者需要多少g?我试图增加到7g,maxExecutors=1500,但得到了相同的结果。驱动程序不会做太多工作。你可以从1g开始。初始执行器,根据您当前的最小值和最大值,可能是600-800更改了配置,但结果文件的大小从3.5 mb到6.5 mb,数量超过6500,但我需要的执行器少于1000。您尝试过更少的执行器吗?使用合并功能?