2015-07-11 62 views
1

我有一個表格,其結構如下。Apache Phoenix on Spark - 無法插入到Phoenix HBase表格/需要建議的最佳做法

trans_count

start_time,   end_time,    count 

00:00:01    00:00:10     1000 

00:00:11    00:00:20     800 

星火偵聽來自卡夫卡事件,並做了分組10秒,將要插入到鳳凰HBase的表。

10秒後,我必須先檢查start_time,end_time組合是否在表格中。如果它在那裏,我們必須採取現有的計數並添加新的計數並再次插入。

UPSERT INTO trans_count(start_time, end_time, count) SELECT start_time, end_time, count? FROM trans_count WHERE start_time = ? AND end_time = ? 

如果在上述語句中沒有插入行,則只需插入數據。

在Apache Storm中,我能夠在configure方法中創建一個Phoenix Connection對象,並且能夠每10秒向UPSERT使用一次相同的連接。

在Spark中,我無法創建連接對象,併爲RDD中的每個對象使用相同的對象。 Spark的輸出將是一個JavaDStream>,其中start_time,end_time,count是Map中的所有鍵。

我最終爲RDD的每次迭代創建一個連接對象,我覺得這不是正確的方法。我已經讀過鳳凰連接重量輕但爲每個RDD創建連接對象似乎不是正確的方法。

我閱讀了一些關於相關內容的博客,但無法實現。請幫助。

注:該應用程序是在JAVA中構建的。

回答

1

解決方案:

而不是創造每objectin RDD的連接,創建於RDD每個分區的連接,並使用所有的對象。