- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我在 Apache Pig 中有一个简单的关系 v
:
dump v;
(151364,[ 'ref'#'R813','highway'#'secondary', 'name:ga'#'Lána Chairdif', 'name'#'Cardiff Lane'],(31015271, 31053762))
(151368,[ 'ref'#'N1', 'oneway'#'yes','designation'#'Buses Only', 'highway'#'trunk', 'motor_vehicle'#'designated', 'name:ga'#'Cearnóg Pharnell Thoir', 'maxspeed'#'30', 'name'#'Parnell Square East'],(389365, 540403072))
(151596,[ 'name:en'#'Liffey', 'boundary'#'administrative', 'name:ga'#'An Life','admin_level'#'8', 'name'#'Liffey', 'waterway'#'river'],(1347749, 1426049020, 1347745, 1426049019, 1347742, 900075612))
(367947,[ 'maxspeed'#'80', 'ref'#'L2223','highway'#'tertiary'],(13259933, 2384217, 335978958))
(367952,['created_by'#'YahooApplet 1.0', 'name'#'Charnwood Avenue', 'highway'#'residential'],(2384386, 25963471, 14949594, 2384385, 6146344, 2384254))
(508603,[ 'ref'#'L3018','highway'#'tertiary', 'maxspeed'#'50', 'name'#'Shelerin Road'],(2854184, 2854168, 335978984, 2853307, 2384254, 335978978, 335978975, 2655735, 2655703, 392675957, 11676198, 920037194, 244531387, 2655952, 11675077))
(727153,[ 'ref'#'N8','highway'#'trunk', 'name'#'Merchants' Quay'],(354153, 453344873))
(727157,['highway'#'unclassified', 'oneway'#'yes', 'maxspeed'#'30', 'name'#'Kyle Street'],(354168, 354167))
(727159,['highway'#'unclassified', 'oneway'#'yes', 'maxspeed'#'30', 'name'#'North Main Street'],(354178, 465226768, 354167, 413995429, 72219131, 685537307, 1232381779, 354164))
(727161,[ 'maxspeed'#'30','highway'#'pedestrian', 'name'#'Maylor Street'],(1486492976, 1515360721, 1515360722, 1515345383, 1515344226, 1515344227, 1515344228, 1515344231))
根据@orangeoctopus 的建议,我尝试使用键名中的任何 '
重新生成我的数据,并且我有以下数据:
(151364,[ ref#'R813', name:ga#'Lána Chairdif', name#'Cardiff Lane',highway#'secondary'],(31015271, 31053762))
(151368,[ motor_vehicle#'designated', name#'Parnell Square East', highway#'trunk', oneway#'yes',designation#'Buses Only', maxspeed#'30', name:ga#'Cearnóg Pharnell Thoir', ref#'N1'],(389365, 540403072))
(151596,[ name:en#'Liffey', boundary#'administrative', waterway#'river', name:ga#'An Life',admin_level#'8', name#'Liffey'],(1347749, 1426049020, 1347745, 1426049019, 1347742, 900075612))
(367947,[highway#'tertiary', maxspeed#'80', ref#'L2223'],(13259933, 2384217, 335978958))
(367952,[ name#'Charnwood Avenue',created_by#'YahooApplet 1.0', highway#'residential'],(2384386, 25963471, 14949594, 2384385, 6146344, 2384254))
(508603,[ maxspeed#'50', ref#'L3018', name#'Shelerin Road',highway#'tertiary'],(2854184, 2854168, 335978984, 2853307, 2384254, 335978978, 335978975, 2655735, 2655703, 392675957, 11676198, 920037194, 244531387, 2655952, 11675077))
(727153,[highway#'trunk', name#'Merchants' Quay', ref#'N8'],(354153, 453344873))
(727157,[ oneway#'yes', maxspeed#'30', name#'Kyle Street',highway#'unclassified'],(354168, 354167))
(727159,[ oneway#'yes', maxspeed#'30', name#'North Main Street',highway#'unclassified' (354178, 465226768, 354167, 413995429, 72219131, 685537307, 1232381779, 354164))
(727161,[highway#'pedestrian', name#'Maylor Street', maxspeed#'30'],(1486492976, 1515360721, 1515360722, 1515345383, 1515344226, 1515344227, 1515344228, 1515344231))
在这两种情况下,v 具有相同的模式/结构:
grunt> describe v;
2012-01-09 22:55:34,271 [main] WARN org.apache.pig.PigServer - Encountered Warning IMPLICIT_CAST_TO_CHARARRAY 1 time(s).
v: {id: int,tags: map[ ],nodes: (null)}
然后我尝试从 tags
映射中提取出一个值:
grunt> w = foreach v generate tags#'ref';
dump w;
但它只给我空数据,即使有些元素在这里有数据。
()
()
()
()
()
()
()
()
()
()
我尝试使用旧的“引用”键(根据@orangeoctopus 的解决方案)
w = foreach v generate tags#'\'ref\'';
这给了我相同的“空”数据,但没有用。 (我还尝试了 '
和 "
的其他组合,比如 "'ref'"
/'"ref"'
/etc. 但除了 '\'ref\''
之外的所有都是无效的 pig latin 语法)
这是怎么回事?如果我尝试根据标签值进行过滤,(例如 filter v by tags#'highway' != ''
),我什么也得不到,这与上述无法解决的问题一致从 map 中提取数据,我做错了什么吗?
最佳答案
非常棘手!
您的问题是您的文字数据包含单引号。您的字符串不是 ref
(3 个字符长),而是 'ref'
(5 个字符长)。我意识到这一点,因为包含字符串的 map 转储通常没有引号。
因此,您需要键入包括这些引号(您必须使用 \
对它们进行转义):
grunt> w = foreach v generate tags#'\'ref\'';
您的另一个选择是更改数据的加载方式,使其不在字符串本身中包含单引号,并将其删除。 PigStorage
不会免费执行此操作,但您可以使用类似 REPLACE
的东西或您自己的 UDF 来执行此操作。
关于hadoop - 无法从 apache pig 中的 map 中提取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8796485/
我想在嵌入式 pig 程序中执行一个 pig 脚本文件,如下所示 ----testPig.pig----- A = load '/user/biadmin/student' using PigStor
我正在使用 CurrentTime(),它是一种日期时间数据类型。但是,我需要它作为字符数组。我有以下几点: A = LOAD ... B = FOREACH A GENERATE CurrentTi
我有一个 hadoop 集群。 安装了 pig : 但是在 Hue (3.7) 中看不到 Pig 编辑器: 我该如何解决? 最佳答案 你能检查一下你的hue.ini文件吗 在解释器部分,如下图 # O
我在源文本文件中有一些日期值,如下面的第 3 列 123|text|2000-02-05 01:00:00-0500|true 如何将它们转换为 Pig 拉丁语中相应的 long 值?谢谢。 a =
看来我做不到 dump (limit A 10); 尽管 B = limit A 10; dump B; 似乎工作。 为什么?这似乎违反直觉。 最佳答案 确实是你不能这样做。 我相信为什么的问题不在范
A = load 'a.txt' as (id, a1); B = load 'b.txt as (id, b1); C = join A by id, B by id; D = foreach C
假设我有一个输入文件作为 map 。 sample.txt [1#"anything",2#"something",3#"anotherthing"] [2#"kish"] [3#"mad"] [4#
我正在尝试用 PIG 减去两个日期。 我有这样的数据: key_one, activation_date , deactivation_date (1456,2010-06-14 00:00:00,2
我正在与 pig 一起加载以逗号分隔的文件/文件夹 hadoop 范围。( this question on how to load multiple files in pig 问题是每个文件夹都有不
我一直认为 '' 和 "" 在 pig 中是一样的,但今天我得到了 Unexpected character '"' 出错 register datafu-pig-1.2.1.jar define C
我有一个运行 Hadoop 0.20.2 和 Pig 0.10 的集群。我有兴趣向 Pig 的源代码添加一些日志,并在集群上运行我自己的 Pig 版本。 我做了什么: 使用'ant'命令构建项目 得到
我无能为力地试图解决这个问题。我的脚本和 UDF 可以在 Pig 0.8.1 上完美运行,但是当我尝试在 Pig 0.10.0 上运行时,我得到: ERROR org.apache.pig.tools
目前我正在执行我的脚本: /usr/bin/pig /somepath/myscript.pig 出于某种原因,pig 总是卡在这个阶段。 2014-01-28 16:49:31,328 [main]
我有一个要加载到 Pig Engine 上的文本文件, 文本文件在单独的行中有名称,数据但有错误......特殊字符......像这样: Ja@@$s000on J@@a%^ke T!!ina M
我有一个用例,我需要计算两个字段的不同数量。 sample : x = LOAD 'testdata' using PigStorage('^A') as (a,b,c,d); y = GROUP x
我是 Pig 的新手,在解析我的输入并将其转换为我可以使用的格式时遇到了问题。输入文件包含具有固定字段和 KV 对的行,如下所示: FF1|FF2|FF3|FF4|KVP1|KVP2|...|KVPn
我有一个每天创建的文件文件夹,所有文件都存储相同类型的信息。我想制作一个脚本,加载最新的 10 个,将它们联合起来,然后在它们上运行一些其他代码。由于 pig 已经有一个 ls 方法,我想知道是否有一
我正在使用 Pig 0.11.0 排名函数并为我的数据中的每个 id 生成排名。 我需要以特定方式对我的数据进行排名。我希望每个新 ID 的排名都重置并从 1 开始。 是否可以直接使用 rank 函数
我有一个 (t,a,b) 形式的元组集合,我想在 Pig 中按 b 对它们进行分组。一旦分组,我想从每组中的元组中过滤出 b 并为每组生成一袋过滤后的元组。 例如,假设我们有 (1,2,1) (2,0
-- do something store result into '$RESULT.tmp'; rmf $RESULT mv $RESULT.tmp $RESULT 如果在 rmf $RESULT
我是一名优秀的程序员,十分优秀!