我对Hadoop框架还不熟悉,希望有人能够指导我。
我正在尝试合并两个.csv文件。
这两个文件具有相同的标题、顺序等。
问题是我不知道如何将这些文件合并成一个文件,并清除空行和未使用的列。
我对Hadoop框架还不熟悉,希望有人能够指导我。
我正在尝试合并两个.csv文件。
这两个文件具有相同的标题、顺序等。
问题是我不知道如何将这些文件合并成一个文件,并清除空行和未使用的列。
这两个文件的头部信息、排序等都是一样的。
由于文件相同,您可以将它们上传到同一个目录中。
hdfs dfs -mkdir -p /path/to/input
hdfs dfs -put file1.csv /path/to/input
hdfs dfs -put file2.csv /path/to/input
hdfs:///path/to/input
读取。注意,在以这种方式放入 HDFS 之前,您需要从两个文件中删除头文件。
另一种选择是在本地连接文件。(同样,在所有文件中首先删除标题,或至少从除第一个文件以外的所有文件中删除标题)
cat file1.csv file2.csv > file3.csv
hdfs dfs -put file3.csv /path/to/input
接下来,使用您熟悉的Hadoop工具读取文件。
由于它们具有相同的结构,使用 PIG 将它们都加载到两个关系中,然后将这两个关系进行 UNION 操作。最后,您可以根据特定条件筛选匹配的记录。为简单起见,我假设文件每个都有两个字段。
A = LOAD '/path/file1.csv' USING PigStorage(',') AS (a1:chararray;a2:chararray);
B = LOAD '/path/file2.csv' USING PigStorage(',') AS (b1:chararray;b2:chararray);
C = UNION A,B;
D = FILTER C BY (C.$0 is NULL OR C.$1 is NULL) <-- If first or second column is null filter the record.
DUMP D;
hadoop fs -getmerge
工具可以合并具有相同标题的文件,只保留第一个文件的标题。这样,您就不需要去掉标题。 - cozyss