Tutorial ini akan membantu anda menguasai kemahiran analisis data besar daripada asas Java kepada aplikasi praktikal. Termasuk asas Java (pembolehubah, aliran kawalan, kelas, dll.), alatan data besar (ekosistem Hadoop, Spark, Hive) dan kes praktikal: mendapatkan data penerbangan daripada OpenFlights. Gunakan Hadoop untuk membaca dan memproses data serta menganalisis lapangan terbang paling kerap untuk destinasi penerbangan. Gunakan Spark untuk menelusuri dan mencari penerbangan terkini ke destinasi anda. Gunakan Hive untuk menganalisis data secara interaktif dan mengira bilangan penerbangan di setiap lapangan terbang.
Asas Java kepada Aplikasi Praktikal: Analisis Praktikal Data Besar
Pengenalan
Dengan kemunculan era data besar, menguasai kemahiran analisis data besar menjadi penting. Tutorial ini akan membawa anda daripada bermula dengan asas Java kepada menggunakan Java untuk analisis data besar yang praktikal. .
Alat analisis data besarEkosistem Hadoop (Hadoop, MapReduce, HDFS)
Muat turun penerbangan data daripada set data OpenFlights.
import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.mapreduce.Reducer; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; public class FlightStats { public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); Job job = Job.getInstance(conf, "Flight Stats"); job.setJarByClass(FlightStats.class); job.setMapperClass(FlightStatsMapper.class); job.setReducerClass(FlightStatsReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); FileInputFormat.addInputPath(job, new Path(args[0])); FileOutputFormat.setOutputPath(job, new Path(args[1])); job.waitForCompletion(true); } public static class FlightStatsMapper extends Mapper<Object, Text, Text, IntWritable> { @Override public void map(Object key, Text value, Context context) throws IOException, InterruptedException { String[] line = value.toString().split(","); context.write(new Text(line[1]), new IntWritable(1)); } } public static class FlightStatsReducer extends Reducer<Text, IntWritable, Text, IntWritable> { @Override public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException { int sum = 0; for (IntWritable value : values) { sum += value.get(); } context.write(key, new IntWritable(sum)); } } }
Langkah 3: Gunakan Spark untuk analisis lanjut
Gunakan Spark DataFrame dan pertanyaan SQL untuk menganalisis data.import org.apache.spark.sql.Dataset; import org.apache.spark.sql.Row; import org.apache.spark.sql.SparkSession; public class FlightStatsSpark { public static void main(String[] args) { SparkSession spark = SparkSession.builder().appName("Flight Stats Spark").getOrCreate(); Dataset<Row> flights = spark.read().csv("hdfs:///path/to/flights.csv"); flights.createOrReplaceTempView("flights"); Dataset<Row> top10Airports = spark.sql("SELECT origin, COUNT(*) AS count FROM flights GROUP BY origin ORDER BY count DESC LIMIT 10"); top10Airports.show(10); } }
CREATE TABLE flights (origin STRING, dest STRING, carrier STRING, dep_date STRING, dep_time STRING, arr_date STRING, arr_time STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE; LOAD DATA INPATH 'hdfs:///path/to/flights.csv' OVERWRITE INTO TABLE flights; SELECT origin, COUNT(*) AS count FROM flights GROUP BY origin ORDER BY count DESC LIMIT 10;
Atas ialah kandungan terperinci Pengenalan kepada Asas Java kepada Aplikasi Praktikal: Analisis Praktikal Data Besar. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!