取消
顯示的結果
而不是尋找
你的意思是:

我們如何在磚超時的問題

Ravi96
新的貢獻者二世

我們創建denorm表是基於JSON攝入但複雜表生成當我們試圖deflatten JSON行正在超過5小時,錯誤消息超時錯誤

有什麼方法可以解決這個問題…請幫助! !

謝謝

4回複4

werners1
尊敬的貢獻者三世

你啟用了多行選項在閱讀json,因為這可能是原因?

另請參閱在這裏

如果可以的話,試著用單行格式。因為你真的可以利用火花的並行處理能力。

Ravi96
新的貢獻者二世

還是筆記本運行3小時。下麵是代碼,不停地運行並附加誤差的圖像

錯誤

進口json我= 0 df =火花。sql (f”“從sap_ingest_選擇不同batch_id {env}。i2726_batch_control_delta_ns_tbl raw_status =“奔跑”和年* * 100 + 10000 +月日之間年(date_sub(現在(),{dayn})) * 10000 +月(date_sub(現在(),{dayn})) * 100 +天(date_sub(現在(),{dayn}))和((())* 10000年+月(現在())* 100 +天(現在()))”“”)my_list = [int (row.batch_id)行df.collect())當我< len (my_list): # df_check =火花。sql (f“select * from editrack_ingest_ {env}。i1001_batch_control_ns_tbl batch_id = {my_list[我]}”)# df_check.show() #打印(my_list[我])#我= + 1 df_check =火花。sql (f“select count(*)從sap_ingest_ {env}。i2726_po_sto_ns_tbl batch_id = {my_list[我]}和年* 10000 +月* 100 +一天一年之間(date_sub(現在(),{dayn})) * 10000 +月(date_sub(現在(),{dayn})) * 100 +天(date_sub(現在(),{dayn}))和((())* 10000年+月(現在())* 100 +天(現在()))“‘)batchid_check = df_check.take(1)[0][0]打印(batchid_check)如果batchid_check = = 0:火花。sql (f“插入表sap_ingest_ {env}。i2726_po_sto_ns_tbl分區(年、月、日)選擇y。batchRecordCount y。correlationId y。createdTimestamp y。envelopeVersion y.interfaceId y。sequenceId y.interfaceName y。消息id, y。etag, y。payloadKey, y.payloadName, y.payloadVersion, y.securityClassification, y.sourceApplicationName, c.businessUnit, c.countryOfOrigin , c.fobDate, c.forwardingAgentDesc, c.forwardingAgentId, c.forwardingAgentDelPt, c.incoTerms1, c.incoTerms2 , c.initialOrderDate , c.initialOrderRef , c.invoicingPartyId, c.orderingPartyId, c.rtmPartyId, c.reprocessorPartyId, m.boxHangingInd, m.changeIndicator, m.deliveryTime, d.amount , d.currency , d.type , p.custOrderNumber, p.outloadDate, p.collection_date, p.celebration_date, p.cust_message, m.legacyProductId , m.lineItemId , m.netweight , m.orderUnit , m.productId , m.quantityPerOrderUnit , m.recStorageLocation , m.season, m.totalQuantity , m.ultRecSapCode , m.ultimateReceivingLocationId , m.unitsOfWeight , m.contractID, m.contractLineItem, m.dispatchPriority, m.updateReason, m.knittedWoven, m.year, c.msgType , c.orderNumber , c.orderTypeSAP, c.orderType , c.portOfLoading, c.purchDept , c.purchaseOrderType , c.recSapCode , c.receivingLocationId , c.receivingLocationType , c.requestedDeliveryDate , c.sendSapCode, c.sendingLocationId , c.sendingLocationType , c.shippingMethod , c.supplierFactoryDesc , c.supplierFactoryId , c.timestamp, k.amount, k.currency, k.type, x.load_timestamp, x.batch_id , x.year , x.month , x.day from sap_ingest_{env}.i2726_complex_ns_tbl as x lateral view outer explode ((array(x.header))) explode_product as y lateral view outer explode ((array(x.payload))) explode_product as c lateral view outer explode(((c.totalPOValue))) explode_product as k lateral view outer explode ((c.lineItems)) explode_product as po lateral view outer explode ((po.itemValue)) explode_product as d lateral view outer explode((x.payload.lineItems)) explode_product as m lateral view outer explode((po.customer_order)) explode_product as p where x.batch_id = "{my_list[i]}" and x.year*10000+x.month*100+x.day between year(date_sub(now(),{dayn}))*10000+month(date_sub(now(),{dayn}))*100+day(date_sub(now(),{dayn})) AND (year(now())*10000 + month(now())*100+ day(now())) ''') else: print('Data already loaded for this batch') print(my_list[i]) i=i+1

werners1
尊敬的貢獻者三世

你為什麼使用循環執行sql查詢?

火花將處理並行處理。

VartikaNain
主持人
主持人

嘿@Raviteja Paluri

希望一切都好!

隻是想檢查如果你能解決你的問題,你會很高興分享解決方案或答案標記為最佳?其他的請讓我們知道如果你需要更多的幫助。

謝謝!

歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map