美文网首页MLSQL
StreamingPro 支持多输入,多输出配置

StreamingPro 支持多输入,多输出配置

作者: 祝威廉 | 来源:发表于2017-03-06 15:22 被阅读578次

前言

最近正好有个需求,就是从不同的数据库以及表里拉出数据,经过一定的处理放到ES里供查询,最好还能放个到parquet里,这样可以支持更复杂的SQL。之前StreamingPro是只能配置一个数据源的,所以做了些改造,方便配置多个数据源,以及多个写出。

最新的下载地址: https://pan.baidu.com/s/1eRO5Wga 依然的,比较大,因为现在他还能支持Thrift JDBC /Rest SQL: 使用StreamingPro 快速构建Spark SQL on CarbonData

输入配置

{
        "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

相关文章

  • StreamingPro 简化流式计算配置

    前言 前些天可以让批处理的配置变得更优雅StreamingPro 支持多输入,多输出配置,现在流式计算也支持相同的...

  • StreamingPro 支持多输入,多输出配置

    前言 最近正好有个需求,就是从不同的数据库以及表里拉出数据,经过一定的处理放到ES里供查询,最好还能放个到parq...

  • webpack4笔记

    安装 五大核心概念 entry:打包入口,支持多入口打包output:输出,可以配置输入路径,文件名等loader...

  • iOS捷径:文件信息

    文件信息 获取文件和图片的详细信息,同时支持文件,图片,视频输入,并支持多文件同时输入。运行后输出文件哈希值,可作...

  • 每日一摘

    多知识输入,少观点输出。 写以自警: 变得温柔、大度、勇敢、保持善良和爱心,多知识输入,少观点输出,打开脑子...

  • 5.SpringBoot多环境配置

    maven多环境配置示例 SpringBoot多环境配置 Profile是Spring针对不同环境不同配置的支持。...

  • 日记:写作的黄金法则

    写作的黄金法则是多读、多写、多动。 多读多写大家都明白,这是最基本的原则。没有输入哪来的输出,没有输出又怎能转化为...

  • Logstash过滤插件

    过滤插件 json 输入配置 输出结果 输出至ES kibana显示 KV 输入配置 kibana显示 Grok ...

  • 多输入  多输出  多体会

    最近在思考一个问题,如何提高自己的阅读能力? 我发现自己的阅读理解能力是跟我阅读的快慢有关系,当只字不差地阅读每个...

  • maven配置多环境支持

    前言 公司的项目目前在有序的开发中,由于懒惰以及对Maven不是很熟悉,多环境的配置一直没有处理。每次提交代码,都...

网友评论

  • mxlubb:有个问题:
    在支持多输出时,对于程序错误(其中一个输出失败),现在的处理策略是什么
    祝威廉:目前是批处理输出遇到错误后会停止。流式计算则是不会。

本文标题:StreamingPro 支持多输入,多输出配置

本文链接:https://www.haomeiwen.com/subject/gahugttx.html