HadoopでCSVファイルを読み込む方法【完全ガイド】
Hadoop自体はCSVファイルの直接の読み取りをサポートしていませんが、HadoopのMapReduceフレームワークやHiveなどのツールを使用してCSVファイルを読み込むことができます。
- MapReduceフレームワークを使用してCSVファイルを読み取るには、MapReduceプログラムを作成することができます。Mapper段階では、CSVファイルの各行を入力として受け取り、フィールドに分割します。Reducer段階では、処理されたデータをHDFSや他のストレージに書き込みます。
- 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つの方法を使用することができます。