问题标签 [apache-pig]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
apache-pig - Apache Pig Latin 参考手册
Pig 是一个用于处理超大文件的数据流编程环境。猪的语言叫做猪拉丁语。
有谁知道PigLatin的好参考手册?我正在寻找包含该语言所有语法和命令描述的内容。不幸的是,Pig wiki 中的 wiki 页面已损坏。
hadoop - 在 PIG (Hadoop) 中将输入拆分为子字符串
假设我在 Pig 中有以下输入:
我想将其转换为:
我还没有(还)找到一种方法来迭代猪拉丁语中的字符数组。我找到了 TOKENIZE 函数,但它在单词边界上分裂。那么“pig latin”可以做到这一点,还是需要Java类才能做到这一点?
python - 我可以使用什么语言来快速执行这个数据库摘要任务?
所以我写了一个 Python 程序来处理一个小数据处理任务。
这是我想要的计算的虚构语言的非常简短的规范:
也就是说,对于每一行,解析出一个单词、一个浮点数和另一个单词。将它们视为玩家 ID、分数和日期。我想要每个球员的前五名得分和日期。数据量不小,但也不大;大约 630 兆字节。
我想知道我应该用什么真正的可执行语言来编写它以使其同样简短(如下面的 Python)但要快得多。
这是一些示例输入数据:
这是我从中得到的输出:
有 7 个值3
,因此我们删除c
和d
值,因为它们的bb
值将它们排除在前 5 之外。因为4
只有一个值,所以它的“前 5”只包含那个值。
这比在 MySQL 中执行相同的查询运行得更快(至少,我们发现执行查询的方式),但我很确定它大部分时间都花在 Python 字节码解释器上。我认为用另一种语言,我可能会让它每秒处理数十万行而不是每分钟。所以我想用一种实现速度更快的语言来编写它。
但我不确定选择什么语言。
我一直无法弄清楚如何在 SQL 中将其表达为单个查询,实际上我对 MySQL 的能力甚至只是
select * from foo into outfile 'bar';
输入数据的能力不感兴趣。
C 是一个显而易见的选择,但是诸如line.split()
对 2 元组列表进行排序和制作哈希表之类的事情需要编写一些标准库中没有的代码,所以我最终会得到 100 行或更多的代码,而不是 14 行。
C++ 似乎是一个更好的选择(它在标准库中有字符串、映射、对和向量),但似乎使用 STL 的代码会更加混乱。
OCaml 会很好,但它是否具有等效的line.split()
,我会对其地图的性能感到难过吗?
Common Lisp 可能有用吗?
是否有类似 Matlab 的数据库计算等价物,可以让我将循环向下推入快速代码?有人试过猪吗?
(编辑:通过提供一些示例输入和输出数据来回应 davethegr8 的评论,并修复了 Python 程序中的错误!)
(附加编辑:哇,这个评论线程到目前为止真的很棒。谢谢大家!)
编辑:
2007 年在 sbcl-devel 上提出了一个非常相似的问题(感谢 Rainer!),这是awk
Will Hartung 用于生成一些测试数据的脚本(尽管它没有真实数据的 Zipfian 分布):
amazon - 在 Amazon Mapreduce 中运行的 pig 脚本中的 STREAM 关键字
我有一个猪脚本,可以激活另一个 python 程序。我能够在我自己的 hadoop 环境中这样做,但是当我在 Amazon map reduce WS 中运行我的脚本时总是失败。
日志说:
org.apache.pig.backend.executionengine.ExecException:错误 2090:处理减少计划时收到错误:''失败,退出状态:127 在 org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigMapReduce$Reduce。在 org.apache.pig.backend.hadoop.executionengine.mapReduceLayer 的 org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigMapReduce$Reduce.processOnePackageOutput(PigMapReduce.java:288) 运行管道(PigMapReduce.java:347)。 PigMapReduce$Reduce.reduce(PigMapReduce.java:260) 在 org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigMapReduce$Reduce.reduce(PigMapReduce.java:142) 在 org.apache.hadoop.mapred.ReduceTask。在 org.apache.hadoop.mapred.TaskTracker$Child.main(TaskTracker.java:2216) 运行(ReduceTask.java:321)
任何的想法?
hadoop - 从 Apache Pig 将数据存储到 SequenceFile
Apache Pig可以使用 PiggyBank 从 Hadoop 序列文件中加载数据SequenceFileLoader
:
REGISTER /home/hadoop/pig/contrib/piggybank/java/piggybank.jar;
DEFINE SequenceFileLoader org.apache.pig.piggybank.storage.SequenceFileLoader();
log = LOAD '/data/logs' USING SequenceFileLoader AS (...)
是否还有一个允许从 Pig 写入 Hadoop 序列文件的库?
hadoop - 在 EvalFunc pig UDF 中抛出异常会跳过那一行,还是完全停止?
我有一个用 Java 编写的用户定义函数 (UDF) 来解析日志文件中的行并将信息返回给 pig,因此它可以完成所有处理。
它看起来像这样:
我的问题是:如果它抛出 IOException,它会完全停止,还是会返回其他不抛出异常的行的结果?
示例:我在猪中运行它
使用此输入:
它会处理这两行并且'logs'会有2个元组,还是会在火灾中死去?
statistics - 使用 hadoop 进行简单统计计算的示例
我想扩展现有的聚类算法以处理非常大的数据集,并重新设计它,使其现在可以用数据分区进行计算,这为并行处理打开了大门。我一直在研究 Hadoop 和 Pig,我认为一个很好的实用起点是计算我的数据的基本统计数据,即算术平均值和方差。
我已经在谷歌上搜索了一段时间,但也许我没有使用正确的关键字,而且我还没有真正找到任何可以很好地进行这种计算的入门知识,所以我想我会在这里问。
任何人都可以向我指出一些如何使用 hadoop 计算均值和方差的好示例,和/或提供一些示例代码。
谢谢
hadoop - 如何从 Yahoo PigLatin UDF 中将文件加载到 DataBag 中?
我有一个 Pig 程序,我试图计算两个袋子之间的最小中心。为了让它工作,我发现我需要将袋子组合成一个数据集。整个操作需要很长时间。我想从 UDF 中的磁盘打开其中一个包,或者能够在不需要 COGROUP 的情况下将另一个关系传递到 UDF 中......
代码:
基本上我的问题是,对于每个专利,我需要传递子关系(字数,kcenters)。为了做到这一点,我先做一个交叉,然后按 PatentNumber 做一个 COGROUP,以便得到一组 PatentNumber、{wordcounts}、{kcenters}。如果我能想出一种方法来传递关系或从 UDF 中打开中心,那么我可以通过 PatentNumber 对字数进行 GROUP 并运行 myudfs.kmeans(wordcount),这希望在没有 CROSS/COGROUP 的情况下更快。
这是一项昂贵的操作。目前这需要大约 20 分钟,并且似乎会占用 CPU/RAM。我在想如果没有 CROSS,它可能会更有效。我不确定它会更快,所以我想尝试一下。
无论如何,看起来从 Pig 内部调用 Loading 函数需要一个 PigContext 对象,而我不是从 evalfunc 获得的。为了使用 hadoop 文件系统,我还需要一些初始对象,但我不知道如何获取。所以我的问题是如何从 PIG UDF 中的 hadoop 文件系统打开文件?我还通过 main 运行 UDF 进行调试。所以我需要在调试模式下从普通文件系统加载。
另一个更好的主意是如果有一种方法可以将关系传递到 UDF 而无需 CROSS/COGROUP。这将是理想的,特别是如果关系驻留在内存中.. 即能够执行 myudfs.kmeans(wordcounts, kcenters) 而无需使用 kcenters 的 CROSS/COGROUP ...
但基本思想是用 IO 换取 RAM/CPU 周期。
无论如何,任何帮助都将不胜感激,PIG UDF 的文档除了最简单的 UDF 之外并没有得到很好的记录,即使在 UDF 手册中也是如此。
mapreduce - 如何在有或没有 Pig 的情况下使用 Cassandra 的 Map Reduce?
有人可以解释 MapReduce 如何与 Cassandra .6 一起工作吗?我已经阅读了字数统计示例,但我不太了解 Cassandra 端与“客户端”端发生的情况。
https://svn.apache.org/repos/asf/cassandra/trunk/contrib/word_count/
例如,假设我正在使用 Python 和 Pycassa,我将如何加载一个新的 map reduce 函数,然后调用它?我的 map reduce 功能必须是安装在 cassandra 服务器上的 java 吗?如果是这样,我如何从 Pycassa 调用它?
还有人提到 Pig 让这一切变得更容易,但我是一个完整的 Hadoop 菜鸟,所以这并没有真正帮助。
您的答案可以使用 Thrift 或其他任何东西,我刚刚提到 Pycassa 来表示客户端。我只是想了解 Cassandra 集群中运行的内容与发出请求的实际服务器之间的区别。
regex - 猪中的正则表达式匹配
使用 apache pig 和文本
我正在尝试匹配“我的兄弟只是没有做错任何事”。
理想情况下,我想匹配以“我的兄弟”开头并以标点符号(句末)或 EOL 结尾的任何内容。
查看 pig 文档,然后点击 java.util.regex.Pattern 的链接,我想我应该可以使用
但这似乎一直匹配到行尾。对进行这场比赛有什么建议吗?我已经准备好拔头发了,拔我的头发,我的意思是切换到 python 流