SparkSQL 读写_Hive_写入数据_编码和配置 | 学习笔记

简介: 快速学习 SparkSQL 读写_Hive_写入数据_编码和配置

开发者学堂课程【大数据 Spark 2020版(知识精讲与实战演练)第三阶段SparkSQL 读写_Hive_写入数据_编码和配置】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/690/detail/12063


SparkSQL 读写_Hive_写入数据_编码和配置

 

内容介绍:

一、步骤一:读取数据

二、步骤二:将数据写入到 HDFS 的 Hive 中

三、课堂总结

 

一、步骤一:读取数据

要把数据插入到 HDFS 中,首先要先有数据,因此第一步是读取数据。

1、上传到 HDFS

读取数据是读 HDFS 上的文件,而不是读本地文件。因为 HiveAcess 程序会放在集群当中运行,无法保证这段程序里的 task 在同一 worker 里执行,无法保证他在哪一台机器里执行,要把文件上传到所有的机器中才能读取本地文件,而所有的机器都可以读取 HDFS 中的文件,它是外部系统,因此上传到 HDFS 当中就可以解决问题。

进入编辑窗口,进入/export/dataset,该目录下有一个叫做 studenttab10k 的文件,是从前面的章节当中上传进来的。

hdfs dfs -put studenttab10k /dataset/

回车上传,结果显示该文件已存在,即上传成功。

2、使用 DF 读取数据

打开 studenttab10k 文件,如下:

image.png

其为 csv 文件,即每个数据和下一个数据之间都使用逗号作为分隔,且以逗号分隔的文件可以改为以制表符分隔的文件。而该文件与 csv 文件十分相似,只不过该文件的分隔符是 tab。

DateFrame 需要结构信息的,那么使用 DateFrame reader 读文件时也要赋予其结构信息而该文件中不包含结构信息。其第一列是 Name,但没有列名,第二列是 age,但没有列名,第三列是平均分数,也没有列名,且也没有说明数据类型的数据,因此需要指定其 schema 信息。

综上所需,其实需要完成两项任务,即修改分格符和指定 schema 信息。

val schema = structType

//structType 导入为 structType(org.apache.spark.sql.types) structType.type 下的类

   List(

   Structfield("name",StringType),

   Structfield("age",IntegerType),

   Structfield("gpa",FloatType)

//编写构造方法,其中接收 List,即其所有的字段,整个

structType 是一个 schema,而这个 schema 里由几列构成,因

此要为每一个列创建字段,用字段标注,因此 List 中是每一列的信

息,叫做 Structfield,且包仍为 structType(org.apache.

spark.sql.types) structType.type 下的包。

val dateframe = spark.read

//读取数据,且读取完毕后生成一个 dateframe

.option("delimiter","\t")

//指定分隔符 delimiter 为\t

.schema(schema)

//传入结构信息,而 schema 接收的是 structType 类型

.csv("hdfs://node01/dataset/studenttab10k")

//其中 node01 可以忽略

val resultDF = dataframe.where('age > 50')

//直接生成 resultDF 获取 dataframe,且指查询大于 50 岁的,但此时系统报错。这是因为要使用这种形式来取列,则应提前输入 import spark.implicits._

导入 spark 对象中的 implicits 的所有隐式转换,即可生成 resultDF。

 

 

二、步骤二:将数据写入到 HDFS 的 Hive 中

1、写入数据

使用写入表的 API,叫做 saveAsTable,将 DateFrame 写入即可,且只需要指定一下表名即可,SparkSQL 会自动地读取 MetaStore 里的原信息。

resultDf.write.mode(SaveMode.OverWrite).saveAsTable("spark03.student")

//指定写入模式,将写入模式指定为 SaveMode.OverWrite.

//指定表名,我们需要是某一数据库里面的某一张表,则先要指定库名为 spark03 再上表名 student。

//此时数据写入成功。

2、运行程

该程序应放在集群里运行,而不能在本地运行,使用 Maven 的 package 打包,执行命令,最终运行结果显示 BUILD success,而打包的结果在 target 目录中。

打开代码编辑窗口,输入 cd 进入到用户的根目录,清除屏幕。选择 Upload to current folder 找到对应的 Original spark0.1.0.jar,

点击打开就会进行数据的上传。输入 ls 查看,即可查询到 Original spark0.1.0.jar。

3、提交程序

使用 submit 命令提交运行程序。如果想在任意目录使用命令,就需要配置 perfile。

spark submit  --master spark://node01:7077 --class cn.itcas

t.spark.sql.HiveAcess

//指定 master 为集群 node01:7077 master 节点。

//指定 Class,告知 Spark 运行的类。进入 idea 中复制类名,具体操作为点击最上面的类名,点击右键,选择 Copy Reference(复制依赖),然后返回代码编辑窗口粘贴,即可以指定包的位置 original spark。这里不配置特别复杂的参数,直接运行,运行结果显示 Persisting file based data source table 'spark03','student'…

hive>select * from spark03.student

//进入 Hive 查看数据,检查是不是只有 50 岁以上的,如果是,则没有问题。运行结果中发现确实没有低于 50 岁的数据,说明插入数据成功。

 

三、课堂总结

主要学习了 SparkSQL 如何将数据插入到 Hive 表中,包括两个步骤,即先进行配置,再编写代码。在编写代码时,先读取再处理,再编写。

在配置阶段,要 enable Hivesupport,再去指定 warehouse(该配置必须指定)。

相关文章
|
1天前
|
SQL 数据库 HIVE
记录hive数据库远程访问配置问题
记录hive数据库远程访问配置问题
117 0
|
1天前
|
SQL 分布式计算 Hadoop
创建hive表并关联数据
创建hive表并关联数据
38 0
|
1天前
|
SQL 分布式计算 数据库
【大数据技术Spark】Spark SQL操作Dataframe、读写MySQL、Hive数据库实战(附源码)
【大数据技术Spark】Spark SQL操作Dataframe、读写MySQL、Hive数据库实战(附源码)
119 0
|
1天前
|
SQL 存储 分布式计算
Hive详解、配置、数据结构、Hive CLI
Hive详解、配置、数据结构、Hive CLI
29 0
Hive详解、配置、数据结构、Hive CLI
|
1天前
|
SQL 数据采集 存储
Hive实战 —— 电商数据分析(全流程详解 真实数据)
关于基于小型数据的Hive数仓构建实战,目的是通过分析某零售企业的门店数据来进行业务洞察。内容涵盖了数据清洗、数据分析和Hive表的创建。项目需求包括客户画像、消费统计、资源利用率、特征人群定位和数据可视化。数据源包括Customer、Transaction、Store和Review四张表,涉及多个维度的聚合和分析,如按性别、国家统计客户、按时间段计算总收入等。项目执行需先下载数据和配置Zeppelin环境,然后通过Hive进行数据清洗、建表和分析。在建表过程中,涉及ODS、DWD、DWT、DWS和DM五层,每层都有其特定的任务和粒度。最后,通过Hive SQL进行各种业务指标的计算和分析。
37 1
Hive实战 —— 电商数据分析(全流程详解 真实数据)
|
1天前
|
SQL HIVE
Hive【基础知识 04】【Hive 属性配置的三种方式及配置的优先级说明】
【4月更文挑战第7天】Hive【基础知识 04】【Hive 属性配置的三种方式及配置的优先级说明】
15 0
|
1天前
|
SQL JSON 算法
hive学习笔记
hive学习笔记
|
1天前
|
SQL 消息中间件 Kafka
Flink部署问题之hive表没有数据如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
|
1天前
|
SQL 消息中间件 存储
案例:Flume消费Kafka数据保存Hive
案例:Flume消费Kafka数据保存Hive
78 0
|
1天前
|
存储 SQL 分布式计算
Hadoop(HDFS+MapReduce+Hive+数仓基础概念)学习笔记(自用)
Hadoop(HDFS+MapReduce+Hive+数仓基础概念)学习笔记(自用)
288 0

热门文章

最新文章