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

西安网站建设网络营销师报名入口

西安网站建设,网络营销师报名入口,郑州专业网页模板制作公司,做兼职靠谱的网站2019独角兽企业重金招聘Python工程师标准>>> 在介绍 PigPen 的文章中,作者在 Future Work 一节中提到,我们在 PigPen 中不能调用本地声明的代码。例如一下代码在最后生成的 Pig 脚本中是执行不了的,会报找不到符号 foo 的错误&…

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

在介绍 PigPen 的文章中,作者在 Future Work 一节中提到,我们在 PigPen 中不能调用本地声明的代码。例如一下代码在最后生成的 Pig 脚本中是执行不了的,会报找不到符号 foo 的错误:

(ns test.core(:require [pigpen.core :as pig]))
(defn foo [x] …)
(pig/map foo)

这样就只能把所有 foo 函数要做的事情全部写在 pig/map 后面。如果 foo 要做的事情很多,代码很长,那么写出来的代码将非常难看。

PigPen 不光不支持本地代码的调用,还不支持 namespace 的引用(https://groups.google.com/forum/#!msg/pigpen-support/-Kd06UfzxEU/vYEAZvmZLFcJ)。

这些在任何编程语言中都看似很自然的功能在初期的 PigPen 中都不支持。其实这里的每一个本地代码的调用或者其他 namespace 中函数的调用在最后写成 Pig 脚本后都是一个 UDF,而 PigPen 的目的之一也就是要取代 Pig 脚本和 UDF混写的方式,所以应该会有解决的办法,但没时间(也懒)去扒源代码去想办法处理这种情况,于是到 GitHub 上找到主要的贡献者 Matt Bossenbroek,向他发邮件请教。

Matt 指出如果要用调用本地代码需要这样做:

(ns test.core(:require [pigpen.core :as pig]))
(defn foo [x] …)
(pig/map (do (require 'test.core) foo))

我尝试了一下,好像并不能达到预期的效果。

于是我试着改变一下生成的 Pig 脚本,看能不能运行起来。反正最后部署到集群上运行的时候也是用的生成的 Pig 脚本文件。在生成的 Pig 脚本中,所有的 Clojure 代码都被 pigpen.PigPenFn* 一组类(PigPenFnBooleanPigPenFnStringPigPenFnTuplePigPenFnDataBagPigPenFnDataByteArray)包装成 UDF 插入到最终生成的 Pig 脚本中,不同的后缀返回不同的 Pig 基本类型的值。

在生成的 Pig 脚本中,这些类的第一个参数都是 '(clojure.core/require (quote [pigpen.pig]))',看一下代码知道这个参数会被当做 Clojure 代码读入来做初始化用,所以应该在这里加上要包含的 namespace。试了一些果然可以运行了。再看一下代码发现要通过 PigPen 的方法来添加这个 require 也不好弄,就打算先用 PigPen 生成 Pig 脚本,然后在这里加上另外要包含的 namespace(写一个脚本往每个这样的类里面加上 namespace 也不会太麻烦)。

同时也顺带问一下 Matt 怎么利用 PigPen 来做,Matt 说正在考虑用什么样的方式来支持引用 namespace。结果在大年初二早上收到邮件说新版本的 PigPen([com.netflix.pigpen/pigpen "0.1.4"]) 可以支持了,并给出了一个例子:

(ns pigpen-demo.core(:require [pigpen.core :as pig][clojure.string :as str]))(defn square [x](* x x))(defn my-query [](->>(pig/return [1 2 3])(pig/map square)(pig/map (fn [x] (square x)))(pig/into [])(pig/map #(str/join "," %))(pig/dump)))

但是一定要把整个项目打包成一个 uberjar 分发到集群上去。这样基本上可以把 PigPen 用到我的实验性的工作中去了(production 环境不允许乱用新东西)。

转载于:https://my.oschina.net/u/1412485/blog/197466

http://www.lbrq.cn/news/2388115.html

相关文章:

  • 临沂做商城网站友情链接软件
  • 电子商务网站建设与管理的感受东莞网站推广策划
  • github搭建个人博客搜索引擎优化好做吗
  • 思帽网站建设站长工具seo诊断
  • 赤峰网站建设招聘营销策略案例
  • 石家庄站布局图郑州网站推广公司电话
  • 中企动力总部在哪里seo千享科技
  • 优秀vi设计案例分析ppt宁波seo
  • 净化网络环境网站该怎么做网络推广平台公司
  • 荆州做网站哪家好如何制作自己的公司网站
  • sharepoint做门户网站漂亮的网页设计
  • mp3网站源码电子商务网站推广
  • 中国建筑一局北京seo做排名
  • 怎么给网站做优化app运营需要做哪些
  • 临安市规划建设局网站湖南平台网站建设制作
  • 做网站只买一个程序seo专员招聘
  • 动态网站建设包括哪些方面想做个网络推广
  • 做们作业网站重庆seo技术教程博客
  • 个人在国外网站做电商培训机构还能开吗
  • 沈阳网站建设多少钱百度sem优化师
  • 湖州长兴县建设局网站北京seo百科
  • 招标代理网站建设网络推广的渠道和方式有哪些
  • 政府网站建设的基本情况优化电池充电什么意思
  • 哈尔滨建站系统报价免费网站推广软文发布
  • 网站上名片如何做湖南网站seo地址
  • 不花钱做网站怎么创建网站
  • 东莞疫情进出最新政策百度seo报价
  • 神东集团网站建设网页搜索快捷键是什么
  • 阿里妈妈网站建设不完整今日最新国际新闻
  • gta5房子网站建设中免费个人网站制作
  • 云端成本治理利器:亚马逊云科技智能仪表盘(AWS Cost Intelligence Dashboard)深度解析
  • JavaSE -- 数组详细讲解(数组介绍,Arrays常用方法,二维数组创建)
  • C语言—如何生成随机数+原理详细分析
  • 产品需求文档(PRD)格式全解析:从 RP 到 Word 的选择与实践
  • 搜索引擎优化全攻略:提升百度排名优化
  • 超简单linux上部署Apache