这是PigStorage()需要用来获取以下查询的文件
INSERT OVERWRITE DIRECTORY 'doop'
select a.* from cdr.cell_tower_info
上述查询的输出就像这样
Haryana Ambala 404 20 80 37591 76.76746 30.373488 404-20-80-37591
Haryana Ambala 404 20 80 30021 76.76746 30.373488 404-20-80-30021
Haryana Ambala 404 20 80 37591 76.76746 30.373488 404-20-80-37591
我正在使用CDR分析,首先我需要使用select从表中检索一些字段并将其保存到HDFS文件夹中,这个结果再次需要使用pig加载进行进一步分析
答案 0 :(得分:1)
试试这个
CREATE EXTERNAL TABLE cell_tower_info
FIELDS TERMINATED BY ','
LOCATION 'doop'
AS
SELECT .* from cdr.cell_tower_info
答案 1 :(得分:0)
Hive默认分隔符是ctrl-A(\ 001)。
我认为PigStorage('\ 001')应该可以在PIG中使用Hive输出数据。
或者,Hive表可以定义为以'\ t'结尾的字段,以便结果可以直接在PIG中使用。
答案 2 :(得分:0)
你能试试吗?
的 input.txt中强>
Haryana Ambala 404 20 80 37591 76.76746 30.373488 404-20-80-37591
Haryana Ambala 404 20 80 30021 76.76746 30.373488 404-20-80-30021
Haryana Ambala 404 20 80 37591 76.76746 30.373488 404-20-80-37591
<强> PigScript:强>
A = LOAD 'input.txt' AS line;
B = FOREACH A GENERATE FLATTEN(STRSPLIT(line,'\\s+')) AS (f1:chararray,f2:chararray,f3:int,f4:int,f5:int,f6:int,f7:double,f8:double,f9:chararray);
C = FOREACH B GENERATE f1,f2,f8,f9;
DUMP C;
<强>输出:强>
(Haryana,Ambala,30.373488,404-20-80-37591)
(Haryana,Ambala,30.373488,404-20-80-30021)
(Haryana,Ambala,30.373488,404-20-80-37591)
答案 3 :(得分:0)
如果你的数据存储在hive表中,那么,
X = LOAD 'hdfs://localhost:9000/user/hive/warehouse/input.txt' using PigStorage('\t') AS line;
Y = FOREACH A GENERATE FLATTEN(STRSPLIT(line,'\\s+')) AS (A1:chararray,A2:chararray,A3:int,A4:int,A5:int,A6:int,A7:double,a8:double,A9:chararray);
Z = FOREACH B GENERATE A1,A2,A8,A9;
DUMP Z;
在我的情况下,端口是9000.根据你的系统给出。