1. 程式人生 > >kettle :couldn't get row from result kettle your server commond encountered a deaklock situation

kettle :couldn't get row from result kettle your server commond encountered a deaklock situation

這個有可能是kettle併發執行引起的

例如下面圖所示


執行kettle報以下錯誤

couldn't get row from result

kettle your server commond encountered a deaklock situation

報這個異常,解決方法是利用kettle本身的一個屬性進行規避,就是修改kettle的併發執行為單步執行,缺點為執行效率會下降。

經過測試,後期沒有在發現這個問題

參考文件

http://type-exit.org/adventures-with-open-source-bi/2010/11/transactional-kettle-transformations/

下面是摘抄自上面地址中的內容

事務性轉換

SLAWOMIR CHODNICKI,2010年11月9日

在水壺中執行轉換時,如果出現錯誤,則有時會使整個轉換的效果回滾。如果您的資料庫系統支援事務,則Kettle可以利用該功能在失敗時啟用回滾。通過在轉換設定對話方塊的“其他”選項卡上啟用“生成轉換資料庫事務”複選框,可以在水壺中啟用事務行為。本文解釋了此功能的用途,以及它在其他情況下的用途。

仔細看看預設行為

如果關閉“make transformation database transactional”功能(預設值),則使用資料庫的步驟的每個副本都會建立並維護自己與資料庫的連線。考慮一個適用於示例資料庫“MyData”的簡單轉換。

該轉換從表中讀取記錄,轉換某些欄位並更新原始表中的記錄。這通常會使用表格輸入步驟,一些轉換步驟和更新步驟完成。表格輸入和更新步驟都將使用相同的資料庫定義“MyData”。執行轉換時,每個步驟都保持自己與“MyData”資料庫的連線。

這通常是一件好事,因為大多數資料庫系統的設計都考慮了併發連線,並且轉換通常在並行執行db查詢時執行得最快。

啟用交易模式

但在某些情況下,預設的並行模型可能不是最佳選擇。啟用“交易”功能有兩個作用:

  1. 所有使用資料庫的步驟都共享一個連線。
  2. 每個連線在開啟時都會開始一個事務。如果轉換成功完成,則事務將被提交。如果轉換遇到錯誤並且過早結束,它將回滾。

共享資料庫連線通常意味著轉換執行速度稍慢。

使用資料庫的步驟競爭與它的連線,並且必要的同步有一些開銷。但它也使一些有趣的可能性。顯而易見的是整個轉型具有交易屬性。就資料庫而言,轉換完全執行或根本不執行。這個特性在增量載入場景中非常有用,例如:在資料庫出現意外出錯的情況下,讓資料庫回滾整個轉換的效果是一個好主意,而不必擔心如何手動將資料庫恢復到原始狀態重試負載。但除了這個很酷的功能之外,還有其他一些效果值得一提。

寫和重讀記錄

水壺初學者有時很難理解為什麼他們不能一步寫出記錄,並在相同的轉換過程中更可靠地在下游進行檢視。這是因為在預設模式下寫入步驟和查詢步驟建立自己的資料庫連線,寫入步驟通常設定為以相當大的批量寫入。如果啟用“事務性”模式,則資料庫連線將被共享。因此,如果寫入步驟配置為批量大小為1(即時查詢執行),則可以在轉換的下一個步驟中可靠地查詢寫入的記錄:沒有併發問題,沒有延遲查詢造成的問題。有人可能會認為,利用這一事實進行轉換的設計並不完善(大多數情況下它們可能不是),

併發修改

我有時會看到轉換,這些轉換會在單獨的更新步驟中更新相同的記錄(可能是它們的不同欄位)。在預設模式下,這可能會導致零星的死鎖情況。假設這兩個步驟都嘗試在併發執行批次中更改相同的記錄。根據資料庫系統的不同,這可能會導致死鎖(有希望不會導致系統停頓,但會被RDBMS檢測到)。這種情況也可以通過將資料庫連線設定為“事務性”來彌補。事實上,使用單個連線會阻止併發批處理的執行,所以永遠不會發生死鎖。同樣,最好不要設計圍繞該事實的轉換,而是嘗試收集對記錄的所有更改並僅更新每條記錄一次。但是,如果您需要快速修復受此影響的轉換,


相關推薦

kettle :couldn't get row from result kettle your server commond encountered a deaklock situation

這個有可能是kettle併發執行引起的例如下面圖所示執行kettle報以下錯誤couldn't get row from resultkettle your server commond encountered a deaklock situation報這個異常,解決方法是利

kettle 轉換欄位遇到問題(couldn't get row from result set unable to get timestamp from resultset at index 9)

在做ETL的時候,連線MySQL讀取含有timestamp型別的表,出現如下錯誤: 經Google,據說是MySQL自身的問題。解決方法也很簡單,在Spoon的資料庫連線中,開啟選項,加入一行命令引數: zeroDateTimeBehavior=convertTo

Ubuntu:Couldn't get UEFI db list

問題描述 昨天剛從arch回到ubuntu,配置好了所需用的各種環境,晚上看了20分鐘人民的名義 早上起來就進不去了。。。 錯誤如圖,先google了關鍵字Couldn't get UEFI d

執行kettle時出現couldn't create java virtual machine

執行kettle時出現couldn’t create java virtual machine 解決辦法:以文字編輯器的方式開啟spoon.bat,將檔案中的Xml改成1024。

解決kettle資料處理中報 Field [XXXXX] is required and couldn't be found! 錯誤

剛接觸kettle,在做資料處理時候一直提示Field [FIELD_ID] is required and couldn't be found!, FIELD_ID是標識欄位,通過自定義常量賦值,模型建立好後一直報錯 最後發現原因是核心物件使用錯誤,使用增加

kettle imestamp : Unable to get timestamp from resultset at index 22

在做ETL的時候,連線MySQL讀取含有timestamp型別的表,出現如下錯誤: 經Google,據說是MySQL自身的問題。解決方法也很簡單,在Spoon的資料庫連線中,開啟選項,加入一行命令引數: zeroDateTimeBehavior=convertToNull 如圖所示: 問題

kettle-java程式碼執行hive相關ktr時報錯: database type with plugin id [HIVE2] couldn't be found!

1.在java專案中執行hive相關的ktr: KettleEnvironment.init(); TransMeta transMeta = new TransMeta("C:\\Users\\lixiang\\Desktop\\hivetorizhi.kt

Android 匯入環信,初始化失敗 java.lang.UnsatisfiedLinkError: Couldn't load hyphenate from loader dalvik.system

錯誤 06-13 15:06:51.813 8467-8467/com.wlkj.ciyun.sj E/AndroidRuntime: FATAL EXCEPTION: main

Android 關於環信java.lang.UnsatisfiedLinkError: Couldn't load hyphenate from loader dalvik.system

關於環信問題: java.lang.UnsatisfiedLinkError: Couldn’t load hyphenate from loader dalvik.system.PathClassLoader[DexPathList[[zip file “/data/app/com.w

解決ERROR: Can't get master address from ZooKeeper; znode data == null

問題描述 執行Hbase shell時報錯: hbase(main):006:0> list TABLE                           &

執行hbase shell時報錯: hbase(main):001:0> list ERROR: Can't get master address from ZooKeeper; znode da

執行hbase shell時報錯: hbase(main):001:0> list ERROR: Can't get master address from ZooKeeper; znode data == null Here is some help for this comma

Kettle Unable to get list of element types for namespace 'pentaho'

我把公司的kettle5.0升級到7.0之後遇到了這個問題,困擾了很久,百度谷歌都查不到結果,所以只能自己查詢原因。 由於已經被搞好了,現在無法截圖了,總之就是下面這行報錯,遇到這個錯誤的同學估計也不需要看截圖就明白: Unable to get list of element types for nam

ERROR: Can't get master address from ZooKeeper; znode data == null Table Namespace Manager not ready

  Hbase執行需要兩個程序:HMaster 和 HRegionServer 建議先jps 一下,確保兩個程序都已啟動。   1.HMaster啟動失敗,報錯如下: ERROR: Can't get master address from ZooK

Amazon Killed an AI Recruitment System Because It Couldn't Stop the Tool from Discriminating Against Women

Machine learning, one of the core techniques in the field of artificial intelligence, involves teaching automated systems to devise new ways of doing thing

Error attempting to get column 'state' from result set

在寫Java後臺的資料返回值時報錯: 錯誤提示如下: Type Exception Report Message Request processing failed; nested exception is org.springframework.dao.Data

hbase資料庫錯誤總結 ——ERROR: Can't get master address from ZooKeeper; znode data == null

執行hbase shell時報錯: hbase(main):001:0> list ERROR: Can't get master address from ZooKeeper; znode data == null Here is some help for th

續:Java Tomcat 中呼叫.net DLL的方法 -- Can't get object clsid from progid

先使用以下測試程式碼,判斷是否時自己的dll出現問題  ActiveXComponent xl = new ActiveXComponent("Excel.Application"); Dispatch xlo = (Dispatch)(xl.getOb

get data from splunk

network hot isp .com etl exe ltsr rom count link: http://dev.splunk.com/view/python-sdk/SP-CAAAER5 download SDK & setup with python

Kettle從excel導入數據到sql server

技術 3-9 exce png exc insert語句 blog image images 從excel工作表中讀取數據逐行執行insert語句插入到sqlserver 為了簡單起見只選取了三個個字段作為參數,日期,字符類型的需要加上‘‘

android webview can‘t get vertx session

vertx session blankandroid webview can't get session when using target="_blank" with <a> link.### Version 3.5.1 (maybe 3.5.0 included,n