当前位置: 首页 > news >正文

做网站的工具怎么使用/太原seo网络优化招聘网

做网站的工具怎么使用,太原seo网络优化招聘网,做h5页面的网站有哪些,课件ppt模板免费下载 素材SQL 在解析字符串方面,能力还是有限,因为支持的算子譬如substring,split等有限,且不具备复杂的流程表达能力。我们内部有个通过JSON描述的DSL引擎方便配置化解析,然而也有一定的学习时间成本。我们当然可以通过SQL的 UDF函数等来完…
SQL 在解析字符串方面,能力还是有限,因为支持的算子譬如substring,split等有限,且不具备复杂的流程表达能力。我们内部有个通过JSON描述的DSL引擎方便配置化解析,然而也有一定的学习时间成本。

我们当然可以通过SQL的 UDF函数等来完成字符串解析,在streamingpro中也很简单,只要注册下你的UDF函数库即可:

"udf_register": {"desc": "测试","strategy": "....SparkStreamingRefStrategy","algorithm": [],"ref": [],"compositor": [{"name": "...SQLUDFCompositor","params": [{"analysis": "streaming.core.compositor.spark.udf.func.MLFunctions"}]}]}

这样你就可以在SQL中使用MLfunctions里面所有的udf函数了。然而为此专门提供一个jar包也是略显麻烦。

这个时候如果能直接写脚本解析就好了,最好是能支持各种脚本,比如groovy,javascript,python,scala,java等。任何一个会编程的人都可以实现一个比较复杂的解析逻辑。

核心是ScriptCompositor模块:

{"name": "...ScriptCompositor","params": [{"inputTableName": "test","outputTableName": "test3"},{"raw": ["val Array(a,b)=rawLine.split(\"\t\");","Map(\"a\"->a,\"b\"->b)"]}]}
如果我想在代码里直接处理所有的列,则如下:
{"name": "streaming.core.compositor.spark.transformation.ScriptCompositor","params": [{"inputTableName": "test2","outputTableName": "test3","useDocMap": true},{"anykey": "val Array(a,b)=doc(\"raw\").toString.split(\"\t\");Map(\"a\"->a,\"b\"->b)"}]
}
通过添加useDocMap为true,则你在代码里可以通过doc(doc是个Map[String,Any]) 来获取你想要的任何字段,然后形成一个新的Map。

如果你只要新生成Map里的字段,忽略掉旧的,则设置ignoreOldColumns=true 即可。

你可以把代码放到一个文件里,如下:
{"name": "....ScriptCompositor","params": [{"inputTableName": "test","outputTableName": "test3"},{"raw": "file:///tmp/raw_process.scala"}]}
通过inputTableName指定输入的表,outputTableName作为输出结果表。 raw代表inputTableName中你需要解析的字段,然后通过你的scala脚本进行解析。在脚本中 rawLine 是固定的,对应raw字段(其他字段也是一样)的值。脚本只有一个要求,最后的返回结果暂时需要是个Map[String,Any]。

这里,你只是提供了一个map作为返回值,作为一行,然后以outputTableName指定的名字输出,作为下一条SQL的输入,所以StreamingPro需要推测出你的Schema。 数据量大到一定程度,推测Schema的效率就得不到保证,这个时候,你可以通过配置schema来提升性能:
{"name": "....ScriptCompositor","params": [{"inputTableName": "test","outputTableName": "test3","schema": "file:///tmp/schema.scala","useDocMap": true},{"raw": "file:///tmp/raw_process.scala"}]}
schema.scala的内容大致如下:
Some(
StructType(
Array(
StructField("a", StringType, true),
StructField("b", StringType, true)))
)
后续roadmap是:
  1. 支持外部脚本,比如放在hdfs或者http服务器上。
  2. 支持java 脚本
  3. 支持javascript脚本
  4. 支持 python 脚本
  5. 支持 ruby脚本
  6. 支持 groovy 脚本

举个案例,从HDFS读取一个文件,并且映射为只有一个raw字段的表,接着通过ScriptCompositor配置的scala代码解析raw字段,展开成a,b两个字段,然后继续用SQL继续处理,最后输出。

{"convert_data_parquet": {"desc": "测试","strategy": "...SparkStreamingStrategy","algorithm": [],"ref": [],"compositor": [{"name": "...SQLSourceCompositor","params": [{"path": "file:///tmp/hdfsfile","format": "org.apache.spark.sql.execution.datasources.hdfs","fieldName": "raw"}]},{"name": "...JSONTableCompositor","params": [{"tableName": "test"}]},{"name": "...ScriptCompositor","params": [{"inputTableName": "test","outputTableName": "test3"},{"raw": ["val Array(a,b)=rawLine.split(\"\t\");","Map(\"a\"->a,\"b\"->b)"]}]},{"name": "...transformation.SQLCompositor","params": [{"sql": "select a,b  from test3 "}]},{"name": "...streaming.core.compositor.spark.output.SQLUnitTestCompositor","params": [{}]}],"configParams": {}}
}
体验地址: https://github.com/allwefantasy/streamingpro/blob/master/README.md#downloads
http://www.jmfq.cn/news/5253517.html

相关文章:

  • 做精彩网站分析的方向是/今日竞彩足球最新比赛结果查询
  • 南阳做网站多少电话/培训课程开发
  • 网上怎么接单做网站/百度网盘搜索入口
  • 建设完网站成功后需要注意什么/优化人员配置
  • 长沙 网站开发报价/如何推广自己的产品
  • 招聘网站代做/seo团队
  • 广州网站(建设信科网络)/百度推广后台登陆首页
  • 怎么在后台设计网站/传统营销
  • vr模式的网站建设公司/友链交换平台
  • 律师网站设计/seo怎么做优化方案
  • 花桥网站制作/适合成人参加的培训班
  • 网站客户端ip做爬虫/百度贴吧入口
  • 电子商务网站建设基础项目实训报告/关键词分析软件
  • php做用户注册网站/如何在百度上做推广
  • 英文 网站 字体/酒店网络营销方式有哪些
  • 网站开发工作职责/app关键词优化
  • 设计师网站设计/百度推广电话
  • 淘宝上做网站的靠谱吗/整合营销名词解释
  • wentommy wordpress/广州做seo的公司
  • 品牌网站建设信息/在什么网站可以免费
  • 企业网络品牌维护/长沙seo外包优化
  • wordpress 流量管理系统/aso优化教程
  • 做海外购网站/seo诊断的网络问题
  • 学做效果图的网站/今天重大新闻国内最新消息
  • 石家庄网站建设接单/百度手机助手下载安卓版
  • 中国专门做生鲜的网站/合肥关键词快速排名
  • 企业手机端网站模板/关键词歌词打印
  • 海外如何淘宝网站建设/怎么做营销
  • 网站的搜索引擎/深圳百度推广客服电话多少
  • 蔡甸做网站/百度pc端首页