第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從JDBC源遷移數(shù)據(jù)時優(yōu)化分區(qū)?

如何從JDBC源遷移數(shù)據(jù)時優(yōu)化分區(qū)?

慕虎7371278 2019-11-04 09:38:05
我試圖將數(shù)據(jù)從PostgreSQL表中的表移動到HDFS上的Hive表。為此,我想出了以下代碼:  val conf  = new SparkConf().setAppName("Spark-JDBC").set("spark.executor.heartbeatInterval","120s").set("spark.network.timeout","12000s").set("spark.sql.inMemoryColumnarStorage.compressed", "true").set("spark.sql.orc.filterPushdown","true").set("spark.serializer", "org.apache.spark.serializer.KryoSerializer").set("spark.kryoserializer.buffer.max","512m").set("spark.serializer", classOf[org.apache.spark.serializer.KryoSerializer].getName).set("spark.streaming.stopGracefullyOnShutdown","true").set("spark.yarn.driver.memoryOverhead","7168").set("spark.yarn.executor.memoryOverhead","7168").set("spark.sql.shuffle.partitions", "61").set("spark.default.parallelism", "60").set("spark.memory.storageFraction","0.5").set("spark.memory.fraction","0.6").set("spark.memory.offHeap.enabled","true").set("spark.memory.offHeap.size","16g").set("spark.dynamicAllocation.enabled", "false").set("spark.dynamicAllocation.enabled","true").set("spark.shuffle.service.enabled","true")  val spark = SparkSession.builder().config(conf).master("yarn").enableHiveSupport().config("hive.exec.dynamic.partition", "true").config("hive.exec.dynamic.partition.mode", "nonstrict").getOrCreate()        val colList                = allColumns.split(",").toList        val (partCols, npartCols)  = colList.partition(p => partition_columns.contains(p.takeWhile(x => x != ' ')))        }        finalDF  }數(shù)據(jù)將插入到基于以下內(nèi)容動態(tài)分區(qū)的配置單元表中 prtn_String_columns: source_system_name, period_year, period_num數(shù)據(jù)未正確分區(qū)。一個分區(qū)較小,而另一個分區(qū)較大。這里有一個偏斜問題。將數(shù)據(jù)插入Hive表時,該作業(yè)在此行失?。簊park.sql(s"INSERT OVERWRITE TABLE schema.hivetable PARTITION(${prtn_String_columns}) select * from preparedDF")但是我知道這是由于數(shù)據(jù)偏斜問題而發(fā)生的。我試圖增加執(zhí)行程序的數(shù)量,增加執(zhí)行程序的內(nèi)存,驅(qū)動程序的內(nèi)存,試圖將其另存為csv文件,而不是將數(shù)據(jù)幀保存到Hive表中,但是不會因給出異常而影響執(zhí)行:java.lang.OutOfMemoryError: GC overhead limit exceeded代碼中有什么我需要更正的嗎?誰能讓我知道如何解決這個問題?
查看完整描述

3 回答

?
HUX布斯

TA貢獻1876條經(jīng)驗 獲得超6個贊

以我的經(jīng)驗,有4種不同的內(nèi)存設置:


A)[1]用于處理數(shù)據(jù)的存儲器,用于VS [2]用于保存程序堆棧的堆空間


B)[1]驅(qū)動程序VS [2]執(zhí)行程序內(nèi)存


到目前為止,通過增加適當?shù)膬?nèi)存種類,我始終能夠使我的Spark作業(yè)成功運行:


因此,A2-B1將在驅(qū)動程序上有可用的內(nèi)存來保存程序堆棧。等等。


屬性名稱如下:


A1-B1) executor-memory


A1-B2) driver-memory


A2-B1) spark.yarn.executor.memoryOverhead


A2-B2) spark.yarn.driver.memoryOverhead


請記住,所有* -B1的總和必須小于工作線程上的可用內(nèi)存,而所有* -B2的總和必須小于驅(qū)動程序節(jié)點上的內(nèi)存。


我敢打賭,罪魁禍首是加粗標記的堆設置之一。


查看完整回答
反對 回復 2019-11-04
  • 3 回答
  • 0 關注
  • 376 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號