HadoopでCSVファイルを読み込む方法【完全ガイド】

Hadoop自体はCSVファイルの直接の読み取りをサポートしていませんが、HadoopのMapReduceフレームワークやHiveなどのツールを使用してCSVファイルを読み込むことができます。

  1. MapReduceフレームワークを使用してCSVファイルを読み取るには、MapReduceプログラムを作成することができます。Mapper段階では、CSVファイルの各行を入力として受け取り、フィールドに分割します。Reducer段階では、処理されたデータをHDFSや他のストレージに書き込みます。
  2. CSVファイルを読み込むためにHiveを使用します。HiveはHadoop上に構築されたデータウェアハウスツールであり、HiveのSQL言語を使用してデータをクエリおよび処理できます。外部テーブルを作成してCSVファイルを読み込み、Hiveのクエリ文を使用してそのデータを操作することができます。

コードの例:

CSVファイルを読み込むためのMapReduceフレームワークを使用したサンプルコード:

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);
    }
}

CSVファイルを読み込むためのHiveのサンプルコード:

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ファイルを読み込んで適切なデータ処理を行うためには、上記の2つの方法を使用することができます。

bannerAds