Apache spark 如何使用SPARK在HDFS中以hive orc表的形式写入大量数据(近800 GB)?

Apache spark 如何使用SPARK在HDFS中以hive orc表的形式写入大量数据(近800 GB)?,apache-spark,apache-spark-sql,spark-dataframe,Apache Spark,Apache Spark Sql,Spark Dataframe,过去3-4个月以及最近,我一直在火花项目工作 我正在用一个巨大的历史文件(800 GB)和一个小的增量文件(3 GB)进行一些计算 使用hqlContext&dataframe,spark中的计算速度非常快,但是当我尝试使用orc格式将计算结果写入hive表时,这将包含近200亿条记录,数据大小近800 GB,这需要花费太多时间(超过2小时,最终失败) 我的群集详细信息是:19个节点,总内存为1.41 TB,总vCore为361 我正在使用的调谐器 --num-executors 67 --ex

过去3-4个月以及最近,我一直在火花项目工作

我正在用一个巨大的历史文件(800 GB)和一个小的增量文件(3 GB)进行一些计算

使用
hqlContext
&
dataframe
,spark中的计算速度非常快,但是当我尝试使用
orc
格式将计算结果写入
hive表时,这将包含近200亿条记录,数据大小近800 GB,这需要花费太多时间(超过2小时,最终失败)

我的群集详细信息是:19个节点,总内存为1.41 TB,总vCore为361

我正在使用的调谐器

--num-executors 67
--executor-cores 6
--executor-memory 60g
--driver-memory 50g
--driver-cores 6
--master yarn-cluster
--total-executor-cores 100
--conf "spark.executor.extraJavaOptions=-XX:+UseG1GC"
在运行时

若我对结果进行计数,那个么它将在15分钟内完成,但若我想将结果作为配置单元表写入HDFS中

[ UPDATED_RECORDS.write.format("orc").saveAsTable("HIST_ORC_TARGET") ]
那么我面临的就是上述问题

请为我提供一个建议或任何关于这一点,因为我在这个案件陷入了过去几天

代码格式:

val BASE_RDD_HIST = hqlContext.sql("select * from hist_orc")
val BASE_RDD_INCR = hqlContext.sql("select * from incr_orc")
使用dataframe、配置单元查询和udf进行一些spark计算

最后:

result.write.format("orc").saveAsTable("HIST_ORC_TARGET_TABLE")

朋友们好,几天前我在这里找到了我自己问题的答案 这是我写的

每当我们执行任何spark程序时,我们都不会指定
队列
参数,有时默认队列有一些限制,不允许您执行所需的执行器或任务,因此可能会导致处理速度缓慢,并在运行较少的执行器/任务时导致内存问题导致作业失败s、 因此,不要忘记在您的执行命令中提到队列名称:

spark-submit --class com.xx.yy.FactTable_Merging.ScalaHiveHql
    --num-executors 25
    --executor-cores 5
    --executor-memory 20g
    --driver-memory 10g
    --driver-cores 5
    --master yarn-cluster
    --name "FactTable HIST & INCR Re Write After Null Merging Seperately"
    --queue "your_queue_name"
    /tmp/ScalaHiveProgram.jar
    /user/poc_user/FactTable_INCR_MERGED_10_PARTITION
    /user/poc_user/FactTable_HIST_MERGED_50_PARTITION

当项目失败时,错误消息是什么?是否内存不足?如果是,这些调整提示可能会有所帮助:16/06/30 13:58:19信息MapOutputRackerMasterEndpoint:被要求将随机播放0的地图输出位置发送到g4t7550.houston.hpecorp.net:53074 16/06/30 13:58:41警告TaskSetManager:在阶段2.0中丢失任务22.0(TID 918,g4t7567.houston.hpecorp.net):java.lang.OutOfMemoryError:org.apache.spark.unsafe.memory.HeapMemoryAllocator.allocate(HeapMemoryAllocator.java:66),org.apache.spark.memory.TaskMemoryManager.allocatePage(TaskMemoryManager.java:259),org.apache.spark.spark.memory.MemoryConsumer.allocatePage(MemoryConsumer.java:112)在