StreamingPro 支援多輸入,多輸出配置
前言
最近正好有個需求,就是從不同的資料庫以及表裡拉出資料,經過一定的處理放到ES裡供查詢,最好還能放個到parquet裡,這樣可以支援更復雜的SQL。之前StreamingPro是隻能配置一個資料來源的,所以做了些改造,方便配置多個資料來源,以及多個寫出。
最新的下載地址: 依然的,比較大,因為現在他還能支援Thrift JDBC /Rest SQL: 。
輸入配置
{ "name": "batch.sources", "params": [ { "path": "file:///tmp/sample.csv", "format": "com.databricks.spark.csv", "outputTable": "test", "header": "true" }, { "path": "file:///tmp/sample.csv", "format": "com.databricks.spark.csv", "outputTable": "test2", "header": "true" } ] },
以前用的是 batch.source, 如果你有多個輸入源,則需要使用batch.sources
元件。每個源需要配置一個outputTable,也就是說這個源取個名字,方便後面使用。
如果是資料庫,則可以這麼寫:
{ "name": "batch.sources", "params": [ { url:"jdbc:mysql://localhost/test?user=fred&password=secret", "dbtable":"table1", "driver":"com.mysql...", "path": "-", "format": "jdbc", "outputTable": "test", }, { "path": "-", "format": "com.databricks.spark.csv", "outputTable": "test2", "header": "true" } ] },
輸出
{ "name": "batch.outputs", "params": [ { "format": "json", "path": "file:///tmp/kk2", "inputTableName": "finalOutputTable" }, { "format": "parquet", "path": "file:///tmp/kk3", "inputTableName": "finalOutputTable" } ] }
我這裡同時輸出為json以及parquet格式。
一個簡單但是涉及點比較多的例子
{ "convert-multi-csv-to-json": { "desc": "測試", "strategy": "spark", "algorithm": [], "ref": [], "compositor": [ { "name": "batch.sources", "params": [ { "path": "file:///tmp/sample.csv", "format": "com.databricks.spark.csv", "outputTable": "test", "header": "true" }, { "path": "file:///tmp/sample.csv", "format": "com.databricks.spark.csv", "outputTable": "test2", "header": "true" } ] }, { "name": "batch.sql", "params": [ { "sql": "select city as tp from test limit 100", "outputTableName": "sqlTable" } ] }, { "name": "batch.script", "params": [ { "inputTableName": "sqlTable", "outputTableName": "scriptTable", "useDocMap": true }, { "-": "val count = doc("tp").toString.length;Map("count"->count)" } ] }, { "name": "batch.sql", "params": [ { "sql": "select scriptTable.tp,scriptTable.count,test2.city,test2.name from scriptTable,test2 limit 100", "outputTableName": "finalOutputTable" } ] }, { "name": "batch.outputs", "params": [ { "format": "json", "path": "file:///tmp/kk2", "inputTableName": "finalOutputTable" }, { "format": "parquet", "path": "file:///tmp/kk3", "inputTableName": "finalOutputTable" } ] } ], "configParams": { } } }
在 batch.sql 裡你可以引用任何一個源的表,或者之前已經在batch.sql裡申明的outputTable, 同理batch.script。 而在batch.outputs裡,你則可以將任何一張表寫入到MySQL,ES,HDFS等檔案儲存系統中。
將配置檔案儲存一下,然後就可以啟動了:
SHome=/Users/allwefantasy/streamingpro ./bin/spark-submit --class streaming.core.StreamingApp --master local[2] --name test $SHome/streamingpro-0.4.8-SNAPSHOT-online-1.6.1.jar -streaming.name test -streaming.platform spark -streaming.job.file.path file://$SHome/batch.json
作者:祝威廉
連結:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/506/viewspace-2819312/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python3常用輸入模式:-輸入多組,固定組,多個輸入Python模式
- MR多輸入
- 關於Tensorflow2.0 keras的子類式多輸入多輸出Keras
- converter設計模式擴充套件,多種輸入輸出與標準輸入輸出的轉化方案設計模式套件
- .NET Standard中配置TargetFrameworks輸出多版本類庫Framework
- 多種格式資料輸出
- HTML如何輸入多個空格HTML
- 輸入輸出
- 輸入輸出流
- 1.輸入輸出
- 【C++】輸入輸出C++
- 輸入輸出系統
- shell——shell輸入輸出
- Java 輸入輸出流Java
- linux中的輸入與輸出管理(重定向輸入,輸出,管道符)Linux
- C語言之輸入輸出C語言
- 常用輸入輸出函式函式
- Java基礎輸入輸出Java
- C語言輸入輸出C語言
- 03 資料輸入-輸出
- 格式化輸入輸出
- Shell輸入\輸出重定向
- 排序,檔案輸入輸出排序
- Java —— 標準輸入輸出Java
- 資料的輸入輸出
- python ----輸入輸出 變數Python變數
- Python輸入和輸出(IO)Python
- python 標準輸入輸出Python
- cadical呼叫與改寫為多輸出2
- kissat的多輸出-學習與修改1
- Android多個EditText輸入效果解決方案Android
- 輸入多個編碼並支援模糊搜尋,引數是一個list
- 1.變數and輸入輸出變數
- 格式化輸入和輸出
- 輸出輸入函式彙總函式
- 06Numpy輸入與輸出
- ACM的Python版輸入輸出ACMPython
- filebeat輸出結果到elasticsearch的多個索引Elasticsearch索引