使用pig加载默认转储文件

qacovj5a  于 2021-06-02  发布在  Hadoop
关注(0)|答案(4)|浏览(286)

哪个是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 analysis,首先我需要使用select从表中检索一些字段并将其保存到hdfs文件夹中,这个结果再次需要使用pig加载以进行进一步分析

oaxa6hgo

oaxa6hgo1#

如果数据存储在配置单元表中,

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。按你的制度给。

bbuxkriu

bbuxkriu2#

配置单元的默认分隔符是ctrl-a(\001)。
我认为pig存储('\001')应该可以使用pig中的配置单元输出数据。
或者,可以将配置单元表定义为以'\t'结尾的字段,以便结果可以直接在pig中使用。

xtfmy6hx

xtfmy6hx3#

试试这个

CREATE EXTERNAL TABLE cell_tower_info
   FIELDS TERMINATED BY ','
   LOCATION 'doop'
   AS
SELECT .* from cdr.cell_tower_info
qnakjoqk

qnakjoqk4#

你能试试这个吗?
输入文件

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

Pig手稿:

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)

相关问题