2017-04-11 81 views
2

我有一些數據,我必須每天攝入Solr,每天的數據大概是10-12 GB,而且我必須爲最後一個數據庫運行追趕工作年,每天大約10-12 GB的數據。在Solr中插入大量數據的最佳方法

我正在使用Java,我需要在我的數據中進行部分更新評分,如果同一個唯一關鍵字再次到達,我使用帶有TextField的docValues。

https://github.com/grossws/solr-dvtf

最初,我使用哪個花了很多的時間(從S3讀取和在60K分批加入到Solr)順序方法。

我發現這個回購協議:

https://github.com/lucidworks/spark-solr

,但我不明白的執行情況,我需要修改字段數據;一些得分邏輯,所以寫了自定義的火花代碼。

然後,我在Solr中創建了4個節點(在同一個IP上),並使用Spark插入數據,最初由Spark創建的分區比Solr節點多,而且指定的'executors'不僅僅是節點,所以它花了更多的時間。

然後,我將RDD重新分區爲4個(Solr節點數量),指定了4個執行程序,然後插入花費更少的時間並且成功,但是當我運行相同的一個月時,一個或多個Solr節點繼續運行在HD上我有足夠的可用空間,並且很少我的RAM使用結束。

請給我一個解決這個問題的方法,我有8個核心CPU, 或者我應該爲Solr上的不同節點使用不同的系統?

謝謝!

回答

1

我不確定spark會是將大量數據加載到solr的最佳方法。

你可能選擇將數據加載到Solr的是:

  1. 通過HBase的索引器也稱爲批處理索引,您的HBase的表和Solr指數之間同步數據。
  2. 你也可以實現幾乎實時的hbase-lily-indexer。
  3. 你也可以使用solr的jdbc工具 - 在我看來是最好的。你可以做的是通過spark從s3讀取數據到配置單元表中。然後你可以實現一個solr jdbc到你的配置單元表,並相信我這是非常快的。

讓我知道你是否想要更多關於這些信息。

+0

我能否自定義添加到Solr?,因爲我將對字段數據進行一些修改以提高文檔評分。 –

+0

而且這也是一個很好的選擇https://github.com/lucidworks/spark-solr ?,我沒有正確理解它,所以使用spark編寫自定義代碼。 –

+1

你可以使用spark-solr,但是會遇到性能問題。 Lucidworks/spark-solr是一個很棒的api嘗試,如果這適合你想要處理的數據量。 –

相關問題