- Python 大数据分析(二)
绝不原创的飞龙
默认分类默认分类
原文:annas-archive.org/md5/5058e6970bd2a8d818ecc1f7f8fef74a译者:飞龙协议:CCBY-NC-SA4.0第六章:第五章处理缺失值和相关性分析学习目标到本章结束时,你将能够:使用PySpark检测和处理数据中的缺失值描述变量之间的相关性计算PySpark中两个或多个变量之间的相关性使用PySpark创建相关矩阵在本章中,我们将使用Iris数据集处理
- Hive 事务表(ACID)问题梳理
文章目录问题描述分析原因什么是事务表概念事务表和普通内部表的区别相关配置事务表的适用场景注意事项设计原理与实现文件管理格式参考博客问题描述工作中需要使用pyspark读取Hive中的数据,但是发现可以获取metastore,外部表的数据可以读取,内部表数据有些表报错信息是:AnalysisException:org.apache.hadoop.hive.ql.metadata.HiveExcept
- Python与大数据:Spark和PySpark实战教程
天天进步2015
python大数据pythonspark
引言在大数据时代,数据处理和分析能力成为核心竞争力。ApacheSpark作为新一代大数据计算引擎,以其高性能、易用性和强大的生态系统,成为数据工程师和分析师的首选工具。而PySpark作为Spark的Python接口,让Python开发者能够轻松驾驭大规模数据处理。本教程将带你系统了解Spark与PySpark的核心原理、环境搭建、典型应用场景及实战案例,助你快速上手大数据分析。目录Spark简
- 基于pyspark的北京历史天气数据分析及可视化_离线
大数据CLUB
spark数据分析可视化数据分析数据挖掘hadoop大数据spark
基于pyspark的北京历史天气数据分析及可视化项目概况[]点这里,查看所有项目[]数据类型北京历史天气数据开发环境centos7软件版本python3.8.18、hadoop3.2.0、spark3.1.2、mysql5.7.38、scala2.12.18、jdk8开发语言python开发流程数据上传(hdfs)->数据分析(spark)->数据存储(mysql)->后端(flask)->前端(
- 基于pyspark的北京历史天气数据分析及可视化_实时
大数据CLUB
spark数据分析可视化数据分析数据挖掘sparkhadoop大数据
基于pyspark的北京历史天气数据分析及可视化项目概况[]点这里,查看所有项目[]数据类型北京历史天气数据开发环境centos7软件版本python3.8.18、hadoop3.2.0、spark3.1.2、mysql5.7.38、scala2.12.18、jdk8、kafka2.8.2开发语言python开发流程数据上传(hdfs)->数据分析(spark)->数据写kafka(python)
- Pyspark中的int
闯闯桑
pythonsparkpandas大数据
在PySpark中,整数类型(int)与Python或Pandas中的int有所不同,因为它基于SparkSQL的数据类型系统。以下是PySpark中整数类型的详细说明:1.PySpark的整数类型PySpark主要使用IntegerType(32位)和LongType(64位)表示整数,对应SQL中的INT和BIGINT:PySpark类型SQL类型位数取值范围占用存储IntegerTypeIN
- pyspark底层浅析
lo_single
Sparksparkpython
pyspark底层浅析pyspark简介pyspark是Spark官方提供的API接口,同时pyspark也是Spark中的一个程序。在terminal中输入pyspark指令,可以打开python的shell,同时其中默认初始化了SparkConf和SparkContext在编写Spark应用的.py文件时,可以通过importpyspark引入该模块,并通过SparkConf对Spark的启动
- PySpark 使用pyarrow指定版本
SLUMBER_PARTY_
pyspark
背景说明在PySpark3.1.3环境中,当需要使用与集群环境不同版本的PyArrow(如1.0.0版本)时,可以通过以下方法实现,而无需更改集群环境配置完整操作说明去pyarrow·PyPI下载对应版本的whl文件后缀whl直接改成zip解压后有两个文件夹,分别是pyarrow和pyarrow-1.0.0.dist-info直接把那两个文件夹打包成pyarrow.zip因为pyarrow里不是单
- Spark入门指南:大数据处理的第一个Hello World程序
AI天才研究院
ChatGPTAI大模型应用入门实战与进阶spark大数据分布式ai
Spark入门指南:大数据处理的第一个HelloWorld程序关键词:Spark、大数据处理、RDD、WordCount、PySpark、分布式计算、HelloWorld程序摘要:本文以经典的WordCount程序为切入点,系统讲解ApacheSpark的核心概念、开发流程与实战技巧。通过从环境搭建到代码实现的全流程解析,帮助大数据初学者快速掌握Spark的基础操作,理解分布式计算的核心逻辑。文章
- pyspark==windows单机搭建
一个java开发
数据分析spark
下载安装JDK17,配置JAVA_HOME下载安装hadoop-3.3.5并完整替换bin目录,配置HADOOP_HOMEIndexof/hadoop/common/hadoop-3.3.5GitHub-cdarlint/winutils:winutils.exehadoop.dllandhdfs.dllbinariesforhadoopwindows下载spark配置SPARK_HOME安装py
- 大数据领域的数据工程:从理论到实践
AI天才研究院
ChatGPTAI大模型企业级应用开发实战大数据ai
大数据领域的数据工程:从理论到实践关键词:数据工程、大数据处理、ETL/ELT、数据湖、数据仓库、数据治理、云计算摘要:本文系统解析大数据领域的数据工程体系,从理论架构到实战落地展开深度探讨。首先构建数据工程核心概念框架,解析数据集成、存储、处理、治理的技术原理;其次通过Python和PySpark代码实现数据清洗、分布式处理等关键算法;结合真实项目案例演示数据管道搭建与优化;最后分析金融、电商等
- pyspark依赖环境设置
pypspark异常py49-protocol.Py433avaError:Anerroroccurredwhilecalling0117.sql.org.apache.spark.SparkException:Jobabortedduetostagefailure:Task®instage0.0failed4times,mostrecentfailure:Losttask0.3instage0.
- 使用 PySpark 从 Kafka 读取数据流并处理为表
Bug Spray
kafkalinq分布式
使用PySpark从Kafka读取数据流并处理为表下面是一个完整的指南,展示如何通过PySpark从Kafka消费数据流,并将其处理为可以执行SQL查询的表。1.环境准备确保已安装:ApacheSpark(包含SparkSQL和SparkStreaming)KafkaPySpark对应的Kafka连接器(通常已包含在Spark发行版中)2.完整代码示例frompyspark.sqlimportSp
- Hugging Face + Spark:打造高效的 NLP 大数据处理引擎(一)
在自然语言处理(NLP)领域,HuggingFace是不可或缺的处理库,而Spark则是大数据处理的必备工具。将两者的优势结合起来,可以实现高效的NLP大数据处理。以下是结合HuggingFace和Spark的两种方法,基于Spark&PySpark3.3.1版本进行探索。方法一:升级Spark版本至3.4及以上如果你愿意升级Spark版本到3.4或更高版本,那么结合HuggingFace和Spa
- linux下载pyspark并修改默认python版本
yishan_3
chrome前端
使用deadsnakesPPA(适用于旧版Ubuntu)如果官方仓库没有Python3.8,可通过第三方PPA安装。步骤1:添加PPA仓库bash复制下载sudoadd-apt-repositoryppa:deadsnakes/ppasudoaptupdate步骤2:安装Python3.8bash复制下载sudoaptinstallpython3.8设置Python3.8为默认版本(可选)如果需要
- 关于Spark Shell的使用
2301_78557870
spark大数据分布式
Spark带有交互式的Shell,可在SparkShell中直接编写Spark任务,然后提交到集群与分布式数据进行交互,并且可以立即查看输出结果。SparkShell提供了一种学习SparkAPI的简单方式,可以使用Scala或Python语言进行程序的编写。一、SparkShell简介SparkShell是Spark提供的交互式命令行工具,支持Scala(默认)和Python(PySparkSh
- RDD的自定义分区器-案例
依年南台
大数据
以下是一个更具体的RDD自定义分区器案例,展示如何根据业务需求实现自定义分区逻辑。案例:按用户地区进行数据分区假设我们有一个电商交易数据集,包含user_id(用户ID)和region(地区)字段。我们希望根据用户所在地区将数据分区,以便后续对每个地区的数据进行独立分析。实现步骤定义地区到分区的映射规则实现自定义分区器应用分区器并验证结果代码实现python运行frompysparkimportS
- 使用Pyspark读取CSV文件并将数据写入数据库(大数据)
雨中徜徉的思绪漫溢
数据库大数据
使用Pyspark读取CSV文件并将数据写入数据库(大数据)近年来,随着大数据技术的快速发展,大数据处理和分析已经成为许多企业和组织的重要任务之一。Pyspark作为ApacheSpark的PythonAPI,为我们提供了强大的工具来处理和分析大规模数据集。在本文中,我们将学习如何使用Pyspark读取CSV文件,并将数据写入数据库。首先,我们需要安装和配置Pyspark。请确保你已经安装了Jav
- Spark安装
姬激薄
spark
一、本地环境安装(单机模式)适合开发和测试,支持Windows、Linux、macOS。1.前置条件Java:Java8或更高版本(建议OpenJDK11+)。bash#检查Java版本java-versionPython(可选):PySpark需要Python3.6+。Scala(可选):若使用ScalaAPI,需安装Scala2.12/2.13。2.下载与安装下载Spark:从ApacheSp
- 【小贪】程序员必备:Shell、Git、Vim常用命令
贪钱算法还我头发
小小宝典gitvim编辑器shellsshlinux
近期致力于总结科研或者工作中用到的主要技术栈,从技术原理到常用语法,这次查缺补漏当作我的小百科。主要技术包括:✅数据库常用:MySQL,HiveSQL,SparkSQL✅大数据处理常用:Pyspark,Pandas⚪图像处理常用:OpenCV,matplotlib⚪机器学习常用:SciPy,Sklearn⚪深度学习常用:Pytorch,numpy⚪常用数据结构语法糖:itertools,colle
- pyspark on yarn 配置
强强0007
pysparkhadoop大数据分布式
1yarn模式出错pysparkonyarn在pycharm上执行出现以下问题:解决方案:在程序最前面添加如下程序importosos.environ["HADOOP_CONF_DIR"]="/opt/module/hadoop-3.1.3/etc/hadoop"2yarn模式配置2.1SparkSessionfrompyspark.sqlimportSparkSessionimportos
- RDD有哪几种创建方式
痕517
开发语言
RDD(弹性分布式数据集)有以下几种常见的创建方式:###从集合创建通过`parallelize()`方法将本地集合转换为RDD。这种方式适合在测试或处理小规模数据时使用,它能将本地的Python列表、Java数组等集合数据并行化到集群上。-**Python示例**:```pythonfrompysparkimportSparkContext#创建SparkContext对象sc=SparkCon
- scala连接mongodb_Spark教程(二)Spark连接MongoDB
weixin_39688035
scala连接mongodb
如何导入数据数据可能有各种格式,虽然常见的是HDFS,但是因为在Python爬虫中数据库用的比较多的是MongoDB,所以这里会重点说说如何用spark导入MongoDB中的数据。当然,首先你需要在自己电脑上安装spark环境,简单说下,在这里下载spark,同时需要配置好JAVA,Scala环境。这里建议使用Jupyternotebook,会比较方便,在环境变量中这样设置PYSPARK_DRIV
- 大数据毕业设计PySpark+Hadoop航班延误预测系统 航班可视化
QQ21503882
javaweb大数据课程设计hadoop
1.选题背景和意义(1)选题背景在旅行规划中,机票价格一直是旅客关注的重点。机票价格的波动不仅受季节、航线、航空公司等因素的影响,还受到市场供求关系、经济形势等因素的影响。因此,通过对机票价格进行预测分析,可以帮助旅客选择更合适的出行时间和机票购买策略,从而节省旅行成本。(2)意义提高乘客购票决策:基于Hadoop的飞机票价格预测能够提供乘客准确的价格预测信息,帮助他们选择合适的购票时间和最优的价
- Spark应用部署模式实例
qrh_yogurt
spark大数据分布式
Local模式新启动一个终端SparkSubmit#pyspark命令启动的进程,实际上就是启动了一个Spark应用程序SparkStandalone模式讲解:6321SecondaryNameNode#hadoop中HDFS第二数据存储节点,负责定期合并fsimage和editslog文件7475Jps6132DataNode#hadoop中HDFS的数据存储节点,负责存储实际的数据块,并响应来
- spark graphx自用学习笔记及pyspark项目实战(基于GraphX的航班飞行网图分析)
GDUT-orzzzzzz
学习笔记sparkpython大数据
这里写自定义目录标题0.前言1.概念1.1图计算的优势1.2图存储格式1.3GraphX存储模式1.4普通概念2.图的构建(待补充)2.1构建图的方法2.2构建图的过程3.图的操作4.算法5.实战5.1项目要求5.2环境5.3安装5.4代码5.5最终结果参考链接0.前言本篇博客自用,部分内容只包含概念,并且博主本身有一定spark和图论基础,部分模糊的地方,可自行查询。1.概念1.1图计算的优势基
- 在Azure Databricks中实现缓慢变化维度(SCD)的三种类型
weixin_30777913
数据仓库pythonsparkazure云计算
在AzureDatabricks中使用PySpark实现缓慢变化维度(SCD)的三种核心类型,需结合SparkSQL和DataFrameAPI的特性,并利用DeltaLake的事务支持。以下是具体设计与实现步骤,以及测试用例:通过以下步骤,可在AzureDatabricks中高效实现SCD逻辑,确保数据历史可追溯且符合业务需求。类型1:覆盖旧值(OverwriteOldValue)设计要点直接更新
- 跨领域大数据抓取与融合:Python爬虫实战指南
Python爬虫项目
2025年爬虫实战项目大数据python爬虫人工智能开发语言easyui
目录引言跨领域大数据抓取与融合的背景与意义技术选型与工具介绍Python爬虫框架:Scrapy、BeautifulSoup、Selenium数据处理与存储:Pandas、NumPy、MongoDB数据融合与分析:PySpark、TensorFlow实战项目:跨领域数据抓取与融合项目概述数据抓取抓取电商数据抓取社交媒体数据抓取新闻数据数据清洗与预处理数据融合与分析代码实现与详细解析电商数据抓取代码社
- PySpark数据透视表操作指南
闯闯桑
大数据sparkpython
在PySpark中,可以使用pivot()方法实现类似Excel数据透视表的功能。以下是详细操作步骤和示例:1.基本语法df.groupBy([行维度列])\.pivot([列维度列])\.agg([聚合函数])\.fillna(0)#可选,填充空值2.示例数据假设有以下DataFrame(sales_df):+-------+----------+------+-------+|region|p
- 在AWS Glue中实现缓慢变化维度(SCD)的三种类型
weixin_30777913
awsetlsql开发语言数据仓库
根据缓慢变化维度(SCD)的三种核心类型(类型1、类型2、类型3),以下是基于AWSGlue的实现设计、步骤及测试用例:一、AWSGlue实现SCD的设计与步骤1.SCD类型1(覆盖旧值)设计目标:直接更新目标表中的记录,不保留历史数据。技术选型:使用AWSGlueETL作业(PySpark)目标存储:S3(Parquet格式)或AmazonRedshift数据比对方式:基于业务键(如custom
- java杨辉三角
3213213333332132
java基础
package com.algorithm;
/**
* @Description 杨辉三角
* @author FuJianyong
* 2015-1-22上午10:10:59
*/
public class YangHui {
public static void main(String[] args) {
//初始化二维数组长度
int[][] y
- 《大话重构》之大布局的辛酸历史
白糖_
重构
《大话重构》中提到“大布局你伤不起”,如果企图重构一个陈旧的大型系统是有非常大的风险,重构不是想象中那么简单。我目前所在公司正好对产品做了一次“大布局重构”,下面我就分享这个“大布局”项目经验给大家。
背景
公司专注于企业级管理产品软件,企业有大中小之分,在2000年初公司用JSP/Servlet开发了一套针对中
- 电驴链接在线视频播放源码
dubinwei
源码电驴播放器视频ed2k
本项目是个搜索电驴(ed2k)链接的应用,借助于磁力视频播放器(官网:
http://loveandroid.duapp.com/ 开放平台),可以实现在线播放视频,也可以用迅雷或者其他下载工具下载。
项目源码:
http://git.oschina.net/svo/Emule,动态更新。也可从附件中下载。
项目源码依赖于两个库项目,库项目一链接:
http://git.oschina.
- Javascript中函数的toString()方法
周凡杨
JavaScriptjstoStringfunctionobject
简述
The toString() method returns a string representing the source code of the function.
简译之,Javascript的toString()方法返回一个代表函数源代码的字符串。
句法
function.
- struts处理自定义异常
g21121
struts
很多时候我们会用到自定义异常来表示特定的错误情况,自定义异常比较简单,只要分清是运行时异常还是非运行时异常即可,运行时异常不需要捕获,继承自RuntimeException,是由容器自己抛出,例如空指针异常。
非运行时异常继承自Exception,在抛出后需要捕获,例如文件未找到异常。
此处我们用的是非运行时异常,首先定义一个异常LoginException:
/**
* 类描述:登录相
- Linux中find常见用法示例
510888780
linux
Linux中find常见用法示例
·find path -option [ -print ] [ -exec -ok command ] {} \;
find命令的参数;
- SpringMVC的各种参数绑定方式
Harry642
springMVC绑定表单
1. 基本数据类型(以int为例,其他类似):
Controller代码:
@RequestMapping("saysth.do")
public void test(int count) {
}
表单代码:
<form action="saysth.do" method="post&q
- Java 获取Oracle ROWID
aijuans
javaoracle
A ROWID is an identification tag unique for each row of an Oracle Database table. The ROWID can be thought of as a virtual column, containing the ID for each row.
The oracle.sql.ROWID class i
- java获取方法的参数名
antlove
javajdkparametermethodreflect
reflect.ClassInformationUtil.java
package reflect;
import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtMethod;
import javassist.Modifier;
import javassist.bytecode.CodeAtt
- JAVA正则表达式匹配 查找 替换 提取操作
百合不是茶
java正则表达式替换提取查找
正则表达式的查找;主要是用到String类中的split();
String str;
str.split();方法中传入按照什么规则截取,返回一个String数组
常见的截取规则:
str.split("\\.")按照.来截取
str.
- Java中equals()与hashCode()方法详解
bijian1013
javasetequals()hashCode()
一.equals()方法详解
equals()方法在object类中定义如下:
public boolean equals(Object obj) {
return (this == obj);
}
很明显是对两个对象的地址值进行的比较(即比较引用是否相同)。但是我们知道,String 、Math、I
- 精通Oracle10编程SQL(4)使用SQL语句
bijian1013
oracle数据库plsql
--工资级别表
create table SALGRADE
(
GRADE NUMBER(10),
LOSAL NUMBER(10,2),
HISAL NUMBER(10,2)
)
insert into SALGRADE values(1,0,100);
insert into SALGRADE values(2,100,200);
inser
- 【Nginx二】Nginx作为静态文件HTTP服务器
bit1129
HTTP服务器
Nginx作为静态文件HTTP服务器
在本地系统中创建/data/www目录,存放html文件(包括index.html)
创建/data/images目录,存放imags图片
在主配置文件中添加http指令
http {
server {
listen 80;
server_name
- kafka获得最新partition offset
blackproof
kafkapartitionoffset最新
kafka获得partition下标,需要用到kafka的simpleconsumer
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.
- centos 7安装docker两种方式
ronin47
第一种是采用yum 方式
yum install -y docker
 
- java-60-在O(1)时间删除链表结点
bylijinnan
java
public class DeleteNode_O1_Time {
/**
* Q 60 在O(1)时间删除链表结点
* 给定链表的头指针和一个结点指针(!!),在O(1)时间删除该结点
*
* Assume the list is:
* head->...->nodeToDelete->mNode->nNode->..
- nginx利用proxy_cache来缓存文件
cfyme
cache
user zhangy users;
worker_processes 10;
error_log /var/vlogs/nginx_error.log crit;
pid /var/vlogs/nginx.pid;
#Specifies the value for ma
- [JWFD开源工作流]JWFD嵌入式语法分析器负号的使用问题
comsci
嵌入式
假如我们需要用JWFD的语法分析模块定义一个带负号的方程式,直接在方程式之前添加负号是不正确的,而必须这样做:
string str01 = "a=3.14;b=2.71;c=0;c-((a*a)+(b*b))"
定义一个0整数c,然后用这个整数c去
- 如何集成支付宝官方文档
dai_lm
android
官方文档下载地址
https://b.alipay.com/order/productDetail.htm?productId=2012120700377310&tabId=4#ps-tabinfo-hash
集成的必要条件
1. 需要有自己的Server接收支付宝的消息
2. 需要先制作app,然后提交支付宝审核,通过后才能集成
调试的时候估计会真的扣款,请注意
- 应该在什么时候使用Hadoop
datamachine
hadoop
原帖地址:http://blog.chinaunix.net/uid-301743-id-3925358.html
存档,某些观点与我不谋而合,过度技术化不可取,且hadoop并非万能。
--------------------------------------------万能的分割线--------------------------------
有人问我,“你在大数据和Hado
- 在GridView中对于有外键的字段使用关联模型进行搜索和排序
dcj3sjt126com
yii
在GridView中使用关联模型进行搜索和排序
首先我们有两个模型它们直接有关联:
class Author extends CActiveRecord {
...
}
class Post extends CActiveRecord {
...
function relations() {
return array(
'
- 使用NSString 的格式化大全
dcj3sjt126com
Objective-C
格式定义The format specifiers supported by the NSString formatting methods and CFString formatting functions follow the IEEE printf specification; the specifiers are summarized in Table 1. Note that you c
- 使用activeX插件对象object滚动有重影
蕃薯耀
activeX插件滚动有重影
使用activeX插件对象object滚动有重影 <object style="width:0;" id="abc" classid="CLSID:D3E3970F-2927-9680-BBB4-5D0889909DF6" codebase="activex/OAX339.CAB#
- SpringMVC4零配置
hanqunfeng
springmvc4
基于Servlet3.0规范和SpringMVC4注解式配置方式,实现零xml配置,弄了个小demo,供交流讨论。
项目说明如下:
1.db.sql是项目中用到的表,数据库使用的是oracle11g
2.该项目使用mvn进行管理,私服为自搭建nexus,项目只用到一个第三方 jar,就是oracle的驱动;
3.默认项目为零配置启动,如果需要更改启动方式,请
- 《开源框架那点事儿16》:缓存相关代码的演变
j2eetop
开源框架
问题引入
上次我参与某个大型项目的优化工作,由于系统要求有比较高的TPS,因此就免不了要使用缓冲。
该项目中用的缓冲比较多,有MemCache,有Redis,有的还需要提供二级缓冲,也就是说应用服务器这层也可以设置一些缓冲。
当然去看相关实现代代码的时候,大致是下面的样子。
[java]
view plain
copy
print
?
public vo
- AngularJS浅析
kvhur
JavaScript
概念
AngularJS is a structural framework for dynamic web apps.
了解更多详情请见原文链接:http://www.gbtags.com/gb/share/5726.htm
Directive
扩展html,给html添加声明语句,以便实现自己的需求。对于页面中html元素以ng为前缀的属性名称,ng是angular的命名空间
- 架构师之jdk的bug排查(一)---------------split的点号陷阱
nannan408
split
1.前言.
jdk1.6的lang包的split方法是有bug的,它不能有效识别A.b.c这种类型,导致截取长度始终是0.而对于其他字符,则无此问题.不知道官方有没有修复这个bug.
2.代码
String[] paths = "object.object2.prop11".split("'");
System.ou
- 如何对10亿数据量级的mongoDB作高效的全表扫描
quentinXXZ
mongodb
本文链接:
http://quentinXXZ.iteye.com/blog/2149440
一、正常情况下,不应该有这种需求
首先,大家应该有个概念,标题中的这个问题,在大多情况下是一个伪命题,不应该被提出来。要知道,对于一般较大数据量的数据库,全表查询,这种操作一般情况下是不应该出现的,在做正常查询的时候,如果是范围查询,你至少应该要加上limit。
说一下,
- C语言算法之水仙花数
qiufeihu
c算法
/**
* 水仙花数
*/
#include <stdio.h>
#define N 10
int main()
{
int x,y,z;
for(x=1;x<=N;x++)
for(y=0;y<=N;y++)
for(z=0;z<=N;z++)
if(x*100+y*10+z == x*x*x
- JSP指令
wyzuomumu
jsp
jsp指令的一般语法格式: <%@ 指令名 属性 =”值 ” %>
常用的三种指令: page,include,taglib
page指令语法形式: <%@ page 属性 1=”值 1” 属性 2=”值 2”%>
include指令语法形式: <%@include file=”relative url”%> (jsp可以通过 include