MK - 大数据工程师2023版【全新升级】

260 阅读5分钟

MK - 大数据工程师2023版【全新升级】

download: 3w lexuecode com

大数据(Big Data)是指数据量巨大,速度快,类型多样的数据集合。这些数据集合的处理需要采用特定的技术和方法,传统的数据处理方式已无法胜任。大数据的处理需要从各个方面入手,包括存储、处理、分析和应用等。

其中,大数据的核心技术主要包括以下方面:

  1. 分布式存储和计算技术: 采用分布式存储和计算的方式,可以解决大规模数据存储和计算的问题。
  2. 数据挖掘和机器学习技术: 通过数据挖掘和机器学习技术,可以从大量数据中提取出有价值的信息和模式。
  3. 数据可视化和呈现技术:通过数据可视化和呈现技术,可以将大量数据以图表等形式表达出来,方便人们分析和理解。
  4. 云计算技术:通过云计算技术,可以实现数据的弹性扩展和高可用性,提高数据处理的效率和可靠性。

大数据应用广泛,包括金融、医疗、电商、社交网络等各个领域。在这些领域中,大数据可以为企业提供各种数据支持,从而帮助企业分析市场、优化产品、提高效率等。

大数据工程师2023版项目实战

基于Spark框架的大数据项目实战教程,主要是通过分析美国纽约市出租车数据集,掌握Spark的基本应用和数据处理方法。

一、项目背景

纽约市的出租车数据每月都会更新,这也给很多人带来了很多商业机会。本项目旨在通过对纽约市出租车数据集的分析,了解每月出租车的使用情况、收益情况以及供需关系,并通过对结果的可视化展示,让我们更好地理解数据背后的含义。

二、数据集简介

本次项目使用的是纽约市出租车数据集,包含了2014年至2015年不同时间段内的出租车行驶路线、纽约市各个区域的划分、每次行驶的距离、时间以及乘客数量等信息。数据集可以在网上找到,也可以通过以下链接进行下载:

Yellow Taxi Trip Records(2015年1月至2015年6月):www.nyc.gov/html/tlc/ht…

三、环境准备

为了使用Spark处理大规模数据,我们需要搭建一个Spark集群,并安装必要的库和工具。这里我使用的是CDH集群(Cloudera Distribution Hadoop),包括以下必要组件:

Hadoop-2.6.0:分布式文件系统和处理框架。

Spark-1.3.0:快速通用的集群计算系统。

Python-2.7.3:Python编程语言及必要的第三方库。

PySpark:Spark与Python语言的接口。

Pandas:数据处理库,用来将结果转化为易于理解的数据格式。

Matplotlib:数据可视化库,用来展示数据结果。

四、数据预处理

在开始处理数据之前,我们需要对数据进行预处理。首先,我们需要将数据从原始文件转化为易于处理的CSV格式,并去除不需要的列。代码如下:

import csv

def clean_trip_data(in_filename, out_filename): with open(out_filename, 'wb') as output_file: writer = csv.writer(output_file)

with open(in_filename, 'rb') as input_file:
  reader = csv.reader(input_file)
  headers = next(reader)

  # Remove unused columns.
  to_remove = [0, 4, 5, 6, 7, 8, 9, 10]
  headers = [i for j, i in enumerate(headers) if j not in to_remove]
  writer.writerow(headers)

  for row in reader:
    # Remove unused columns.
    row = [i for j, i in enumerate(row) if j not in to_remove]
    writer.writerow(row)

接下来,我们需要处理CSV文件的日期和时间列,将其转化为Python的datetime格式。这可以通过自定义一个日期解析器来实现。代码如下:

from datetime import datetime

def parse_date(date_str): return datetime.strptime(date_str, '%Y-%m-%d')

def parse_time(time_str): return datetime.strptime(time_str, '%H:%M:%S')

上面这两个方法将分别把日期字符串和时间字符串转化为Python的datetime对象。

最后,我们需要将数据上传到HDFS分布式文件系统中。代码如下:

from subprocess import call

def upload_to_hdfs(local_file, hdfs_file): call(["hdfs", "dfs", "-put", "-f", local_file, hdfs_file])

upload_to_hdfs("trip_data_cleaned.csv", "/user/hadoop/trip_data_cleaned.csv")

五、数据分析

经过预处理,我们的数据已经变得更加干净且易于处理。接下来,我们将使用Spark对数据进行分析。下面是一些基本的Spark步骤:

创建一个SparkContext对象,用于在集群上执行操作。

将数据从HDFS文件读入新的RDD对象中。

对RDD进行转换,例如过滤或映射,生成新的RDD对象。

对RDD进行操作,例如求和或计数。

将结果保存到HDFS文件中。

我们将从以下方面分析数据:

每月出租车总收益增长趋势

每月热门的乘客上车地点

每月最热门的目的地

车辆需求整体情况

高峰期与非高峰期车辆需求情况对比

班车服务需求情况

五一,国庆节及周末班车服务需求情况

1.每月出租车总收益增长趋势

# Import Spark SQL library

from pyspark.sql import SQLContext

# Create a SQL context

sqlContext = SQLContext(sc)

# Load the CSV file as a DataFrame

dataframe = sqlContext.read.format("com.databricks.spark.csv")  
.options(header="true", inferSchema="true")  
.load("/user/hadoop/trip_data_cleaned.csv")

# Register the DataFrame as a SQL temporary view

dataframe.createOrReplaceTempView("trip_data")

# Query the month and total revenue for each month

query = "SELECT DATE_FORMAT(pickup_datetime, 'yyyy-MM') AS month, SUM(total_amount) AS revenue FROM trip_data GROUP BY month ORDER BY month"

# Execute the query and save the results to a DataFrame

result = sqlContext.sql(query)

# Show the results

result.show()

2.每月热门的乘客上车地点

# Import Spark SQL library

from pyspark.sql import SQLContext

# Create a SQL context

sqlContext = SQLContext(sc)

# Load the CSV file as a DataFrame

dataframe = sqlContext.read.format("com.databricks.spark.csv")  
.options(header="true", inferSchema="true")  
.load("/user/hadoop/trip_data_cleaned.csv")

# Register the DataFrame as a SQL temporary view

dataframe.createOrReplaceTempView("trip_data")

# Query the pickup location, month and count for each pickup location and month

query = "SELECT pickup_location, DATE_FORMAT(pickup_datetime, 'yyyy-MM') AS month, COUNT(*) AS count FROM trip_data GROUP BY pickup_location, month ORDER BY month, count DESC"

# Execute the query and save the results to a DataFrame

result = sqlContext.sql(query)

# Show the results

result.show()

3.每月最热门的目的地

# Import Spark SQL library

from pyspark.sql import SQLContext

# Create a SQL context

sqlContext = SQLContext(sc)

# Load the CSV file as a DataFrame

dataframe = sqlContext.read.format("com.databricks.spark.csv")  
.options(header="true", inferSchema="true")  
.load("/user/hadoop/trip_data_cleaned.csv")

# Register the DataFrame as a SQL temporary view

dataframe.createOrReplaceTempView("trip_data")

# Query the dropoff location, month and count for each dropoff location and month

query = "SELECT dropoff_location, DATE_FORMAT(pickup_datetime, 'yyyy-MM') AS month, COUNT(*) AS count FROM trip_data GROUP BY dropoff_location, month ORDER BY month, count DESC"

# Execute the query and save the results to a DataFrame

result = sqlContext.sql(query)

# Show the results

result.show()

4.车辆需求整体情况

# Import Spark SQL library

from pyspark.sql import SQLContext

# Create a SQL context

sqlContext = SQLContext(sc)

# Load the CSV file as a DataFrame

dataframe = sqlContext.read.format("com.databricks.spark.csv")  
.options(header="true", inferSchema="true")  
.load("/user/hadoop/trip_data_cleaned.csv")

# Register the DataFrame as a SQL temporary view

dataframe.createOrReplaceTempView("trip_data")

# Query the hour and count for each FROM trip_data GROUP BY hour ORDER BY hour"

# Execute the query and save the results to a DataFrame

result = sqlContext.sql(query)

# Show the results

result.show()