我開始爲我的一個項目學習Hadoop Stack(在hadoop堆棧中相當新手)。我試圖找出將數據放入HIVE的ETL過程的最佳方法。我有一些工作解決方案,但我認爲這不是最佳的,並且有更好的選擇。Hadoop導入數據 - 正確的ETL方法
我的案例: 我有一個系統生成的二進制文件的原始數據。在將它們放在HDFS/HIVE之前,我必須使用unix控制檯程序(非常複雜)解析它們以獲取包含數據的文本行,然後將其放到HIVE表中。
我目前的解決方案:
系統添加一條消息,卡夫卡,有一個新的二進制文件等待處理。
我有hadoop的主節點上的Python腳本(至少現在):
A)recieveing卡夫卡消息
B)下載該文件。
C)執行控制檯程序
d)保存文本輸出到CSV
E)推CSV文件到HDFS
F)從CSV在HIVE創建臨時表文件
G)將來自臨時TABLE的數據插入到ORC引擎上的單獨的pernament表中
H)刪除臨時表
我的問題:
這是流最佳?也許有些東西可以更簡單?
它可以在每個hadoop節點上自動安排/部署/執行這個python腳本(或其他更好的技術?)嗎?
任何關於工具/選項的線索使整個過程易於維護,計劃和高效?
Thx爲線索。 表現在創建: '創建外部表,如果NOT EXISTS模板 ( ---- CVS架構 ) 行格式分隔的字段TERMINATED BY '' 保存爲TEXTFILE location' 凡位置是HDFS路徑CSV文件。 在此之後,我使用: 'INSERT INTO TABLE target_table SELECT * FROM template; DROP TABLE IF EXISTS template;' – mcwolf