hadoop怎么读取csv文件

1274
2024/3/21 10:43:18
栏目: 编程语言
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

Hadoop本身并不直接支持CSV文件的读取,但可以通过Hadoop的MapReduce框架或Hive等工具来读取CSV文件。

  1. 使用MapReduce框架读取CSV文件: 可以编写一个MapReduce程序来读取CSV文件。在Mapper阶段,将CSV文件中的每一行作为输入,并将其拆分为字段;在Reducer阶段,将处理过的数据写入HDFS或其他存储中。

  2. 使用Hive读取CSV文件: Hive是建立在Hadoop之上的数据仓库工具,可以通过Hive的SQL语言来查询和处理数据。可以创建一个外部表来读取CSV文件,并使用Hive的查询语句来操作这些数据。

示例代码:

使用MapReduce框架读取CSV文件的示例代码:

public class CSVReader {
    public static class CSVMapper extends Mapper<LongWritable, Text, Text, Text> {
        public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
            String line = value.toString();
            String[] fields = line.split(",");
            // 处理CSV文件中的每一行数据
            context.write(new Text(fields[0]), new Text(fields[1]));
        }
    }

    public static void main(String[] args) throws Exception {
        Configuration conf = new Configuration();
        Job job = Job.getInstance(conf, "CSVReader");
        job.setJarByClass(CSVReader.class);
        job.setMapperClass(CSVMapper.class);
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(Text.class);
        FileInputFormat.addInputPath(job, new Path("input.csv"));
        FileOutputFormat.setOutputPath(job, new Path("output"));
        System.exit(job.waitForCompletion(true) ? 0 : 1);
    }
}

使用Hive读取CSV文件的示例代码:

CREATE EXTERNAL TABLE my_table (
    col1 STRING,
    col2 STRING,
    col3 INT
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LOCATION '/path/to/csv/file';

SELECT * FROM my_table;

通过以上两种方法,可以在Hadoop上读取CSV文件并进行相应的数据处理操作。

辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读: 介绍设计适合Hadoop的数据模型的方法和思路