1、Spark Core 读取数据的方式

数据源类型 读取方法 / API 说明
本地文件 / HDFS 文本文件 sc.textFile("path") 读取文本文件,每行作为一条记录;支持本地路径(file:///)或 HDFS 路径(hdfs:///),支持通配符(如 *.txt)。
JSON 文件 sc.textFile("path").map(json解析)(配合 json4s 等库) 需手动解析 JSON 字符串,需引入第三方 JSON 解析库。
SequenceFile(Hadoop 序列化文件) sc.sequenceFile[K, V]("path") 读取 Hadoop 序列文件,需指定键(K)和值(V)的类型。
ObjectFile(Spark 序列化文件) sc.objectFile[T]("path") 读取 Spark 序列化的对象文件,需指定对象类型 T。
其他 Hadoop 输入格式 sc.hadoopFile[K, V, InputFormat]("path") 或 sc.newAPIHadoopFile(...) 适配 Hadoop 自定义 InputFormat,灵活支持特殊格式数据源。

2、Spark SQL 读取数据的方式

数据源类型 读取方法 / API 说明
CSV/TSV 等文本文件 spark.read.option(...).csv("path") 支持指定表头(header)、分隔符(sep)、数据类型推断(inferSchema)等参数。
JSON 文件 spark.read.json("path") 自动解析 JSON 结构,支持单行或多行 JSON 格式。
Parquet/ORC 列式存储 spark.read.parquet("path") / spark.read.orc("path") 高效读取列式存储文件(Spark SQL 默认格式),保留 schema 信息。
Hive 表 spark.table("db.table") 或 spark.sql("SELECT * FROM db.table") 需集成 Hive,直接读取 Hive 元数据管理的表。
关系型数据库(JDBC) spark.read.format("jdbc").option(...).load() 通过 JDBC 连接 MySQL、PostgreSQL 等,需指定 URL、表名、账号密码等。
Avro/Kafka 等其他数据源 spark.read.format("avro").load("path") / spark.read.format("kafka").option(...).load() 支持 Avro 格式文件、Kafka 流数据等,需指定对应格式。

3、Hive 中数据的来源

数据来源 导入方式 说明
本地文件系统 LOAD DATA LOCAL INPATH 'local_path' INTO TABLE table_name 数据从本地复制到 Hive 仓库目录(默认 /user/hive/warehouse)。
HDFS LOAD DATA INPATH 'hdfs_path' INTO TABLE table_name(内部表);CREATE EXTERNAL TABLE ... LOCATION 'hdfs_path'(外部表) 内部表:数据从 HDFS 移动到仓库目录;外部表:直接关联 HDFS 路径,不移动数据。
其他 Hive 表 INSERT INTO table_name SELECT ... FROM other_table 通过 SQL 语句从现有表抽取、转换后插入新表(常用于 ETL 过程)。
关系型数据库 1. Sqoop 工具导入:sqoop import --connect jdbc:... --table ... --target-dir hdfs_path;2. Hive JDBC 关联 先通过 Sqoop 导入 HDFS 再加载到 Hive,或直接通过 JDBC 连接外部数据库。
流数据(实时数据) Flink/Spark Streaming 写入 HDFS/Hive 表 流处理框架将实时数据写入 Hive 支持的存储格式(如 ORC/Parquet)。
云存储(S3/OSS 等) 配置 Hive 兼容云存储文件系统,通过 LOAD DATA 或外部表关联 直接读取云存储中的数据,无需迁移到本地。
日志文件 Flume 采集日志到 HDFS,再加载到 Hive 表 常用于用户行为日志、服务器日志等非结构化数据的分析。

更多推荐