在猪中存储多个变量

Storing multiple variables in pig

我对猪非常陌生,我不确定 google 是什么,因为我得到的那些结果并没有真正解决我的问题。

我现在拥有的。

a = LOAD 'SOME_FILE.csv' using PigStorage(',') AS schema; 
C = FOREACH B GENERATE [=10=], , ; 
STORE C into 'some storage' using PigStorage(';')

我想做的是 运行 通过 for 循环并将它们存储在同一个文件中。

我该如何实现?谢谢。换句话说,我有 SOME_FILE.csv、SOME_FILE_1.csv、SOME_FILE_2.csv 等等。但是我想通过相同的 FOREACH 语句 运行 它们并且只 运行 一个 STORE 语句或者至少将结果连接到相同的输出。

对不起,如果我不清楚。

说而不是 'SOME_FILE_*.csv',我如何将它们全部写入同一个文件?在这种情况下,我需要处理的文件数量超过 3.

谢谢。

假设您的输入文件具有相同的架构:

a = LOAD 'SOME_FILE.csv' using PigStorage(',') AS schema;
b = LOAD 'SOME_FILE_1.csv' USING PigStorage(',') AS schema;
c = LOAD 'SOME_FILE_2.csv' USING PigStorage(',') AS schema;

您可以使用 UNION 连接您的输入

a_b_c = UNION a,b,c; 
C = FOREACH a_b_c GENERATE [=11=], ,; 
STORE C into 'some storage' using PigStorage(';');

你可以用两种方式做

 1.use glob function for uploading multiple csv in same directory from hdfs and
  1. 使用联合

glob 函数
在 hdfs 中创建目录并将所有 SOME_FILE_*.csv 放入 hdfs

中创建的目录中

hadoop dfs -mkdir -p /user/hduser/data

将 csv 放入 hdfs 中创建的目录中

hadoop dfs -put /location_of_file/some_files*.csv /user/hduser/data

hadoop dfs -ls /user/hduser/data

使用

转到 apache pig 的 grunt shell

pig -x mapreduce

a = 加载 '/user/hduser/data/{ SOME_FILE, SOME_FILE_1, SOME_FILE_2}.csv' 使用 PigStorage(',' ) 作为架构;

转一个;