在hadoop中合并csv文件

htzpubme  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(394)

**结束。**此问题不符合堆栈溢出准则。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。

三年前关门了。
改进这个问题
我是hadoop框架的新成员,如果有人能带我完成这个任务,我会非常感激的。
我正在尝试合并两个.csv文件。
这两个文件有相同的头,顺序相同,等等。
问题是我不知道如何将这些文件合并到一个文件中,然后清除空行和未使用的列。

mmvthczy

mmvthczy1#

由于它们具有相同的结构,请使用pig将它们加载到2个关系中,然后合并这2个关系。最后,您可以筛选符合特定条件的记录。为了简单起见,我假设文件中每个文件都有2个字段。

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;
xt0899hw

xt0899hw2#

这两个文件有相同的头,顺序相同等等
因为文件是相同的,所以您可以将它们上载到相同的目录。

hdfs dfs -mkdir -p /path/to/input
hdfs dfs -put file1.csv /path/to/input
hdfs dfs -put file2.csv /path/to/input

如果您从中读取,hdfs将在本机上将这些文件视为“单个文件的一部分” hdfs:///path/to/input 注意,在以这种方式将这两个文件放入hdfs之前,您需要从这两个文件中剥离头文件。
另一种选择是在本地连接这些文件(同样,首先删除头文件,或者至少从除第一个文件以外的所有文件中删除头文件)

cat file1.csv file2.csv > file3.csv
hdfs dfs -put file3.csv /path/to/input

在那之后,使用任何你知道的hadoop工具来读取文件。

相关问题