我正在尝试使用spark框架将分区的数据从一个表(文本格式)插入到另一个表(木地板格式)。数据约为20gb,我正在使用的配置是:
master =纱线
部署模式客户端
驱动程序内存= 3克
执行器内存= 15gb
执行者数量= 50
执行者核心= 4
我正在使用下面的代码来做到这一点:
val df = spark.sql("select * from table1")
df.repartition(70).write().mode("append").format("parquet").insertInto("table2")
每次尝试运行此命令时,完成某些任务后,作业都会失败,并出现Java堆空间问题。
基于数据的大小和我指定的Spark配置,我不确定在这里是否缺少任何内容,因为作业失败了。任何帮助,将不胜感激。
答案 0 :(得分:0)
您必须设置JVM参数:
How to set Spark MemoryStore size when running in IntelliJ Scala Console?
官方信息:
火花属性主要可以分为两种:一种是相关的 进行部署,例如“ spark.driver.memory”,“ spark.executor.instances”, 设置时,此类属性可能不会受到影响 在运行时通过SparkConf以编程方式进行操作,否则行为为 取决于您选择的集群管理器和部署模式,因此 建议通过配置文件或spark-submit进行设置 命令行选项;另一个主要与Spark运行时有关 控件,例如“ spark.task.maxFailures”,这种属性可以是 设置任何一种方式。