2015-04-16 145 views
1

我想知道是否有可能直接從HDFS導入數據到Opentsdb。你能給我一些例子/提示嗎?導入HDFS數據到Opentsdb

我嘗試使用EXEC沒有成功的結果:

hadoop jar path.jar org.apache.solr.hadoop.HdfsFindTool -find hdfs:///path -type f -name 'part*' -mmin -5 -exec path/opentsdb-master/build/tsdb import {} \; 

-find: Fatal internal error 
java.lang.NullPointerException 
     at org.apache.hadoop.fs.shell.find.Exec.initialise(Exec.java:109) 
     at org.apache.hadoop.fs.shell.find.BaseExpression.initialise(BaseExpression.java:64) 
     at org.apache.hadoop.fs.shell.Find.processArguments(Find.java:383) 
     at org.apache.hadoop.fs.shell.Command.processRawArguments(Command.java:190) 
     at org.apache.hadoop.fs.shell.Command.run(Command.java:154) 
     at org.apache.hadoop.fs.FsShell.run(FsShell.java:255) 
     at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70) 
     at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84) 
     at org.apache.solr.hadoop.HdfsFindTool.main(HdfsFindTool.java:43) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:606) 
     at org.apache.hadoop.util.RunJar.main(RunJar.java:212) 

回答

0

每個TSD使用開源數據庫HBase的存儲和檢索時間序列數據。現在您可以使用HBase shell或Java API將您的HDFS數據存入HBase。如果您使用的是其他數據庫而不是HBase,則需要使用sqoop將HDFS數據放入數據庫。

+0

謝謝你的建議。你的意思是將數據直接寫入OpenTSDB使用的HBase表中? – marlieg

+0

是的,直接將數據寫入OpenTSDB使用的HBase表中 –

0

如果您想通過opentsdb將hdfs數據直接寫入HBase進行時間序列數據存儲。您需要處理幾件事情: OpenTSDB具有特殊的時間序列格式,如複合rowkey概念和經過的增量時間。我不確定HDFS中的數據格式。最好的選擇是用Java編寫腳本,從HDFS讀取數據並以OpenTSDB格式寫入HBase。您還需要創建度量標準和標籤。