SparkSQL 读写_Hive_SparkSQL 创建 Hive 表 | 学习笔记

简介: 快速学习 SparkSQL 读写_Hive_SparkSQL 创建 Hive 表

开发者学堂课程【大数据 Spark 2020版(知识精讲与实战演练)第三阶段:SparkSQL 读写_Hive_SparkSQL 创建 Hive 表】学习笔记,与课程紧密联系,让用户快速学习知识。

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


SparkSQL 读写_Hive_SparkSQL 创建 Hive 表

 

内容介绍:

一、原始代码

二、实操

 

一、原始代码

上节课我们学习了如何使用 SparkSQL 查看 Hive 当中已存在的表。而我们经常会遇到需要使用 SparkSQL 创建 Hive 表的情形,本节课就来介绍如何使用 SparkSQL 创建 Hive 表。

val createTableStr=

 """

| CREATE EXTERNAL TABLE student

|(

| name STRING,

| age INT,

| gpa string

|)

| ROW FORMAT DELIMITED

|  FIELDS TERMINATED BY '\t'

|  LINES TERMINATED BY '\n'

| STORED AS TEXTFILE

| LOCATION '/dataset/hive'

""".stripMargin

spark.sql("CREATE DATABASE IF NOT EXISTS spark_integritionl") spark.sql("USE spark_integrition1")

spark.sql(create TableStr)

spark.sal("LOAD DATA INPATH '/dataset/studenttable10k’OVERWRITE INTO TABLE student")

spark.sal("select * from student limit").show()

在实际操作中,仅需要在以上代码的基础上作出修改即可运行。

 

二、实操

1、复制以上代码到文本编辑器中,对其进行修改,如数据库名称等内容

val createTableStr=

"""

| CREATE EXTERNAL TABLE student

|(

| name STRING,

| age INT,

| gpa string

|)

| ROW FORMAT DELIMITED

|  FIELDS TERMINATED BY '\t'

|  LINES TERMINATED BY '\n'

| STORED AS TEXTFILE

| LOCATION '/dataset/hive'

""".stripMargin

spark.sql("CREATE DATABASE IF NOT EXISTS spark03")

//如果不存在数据库,则创建一个 spark03 的数据库

spark.sql("USE spark03")

//使用新创建的数据库

spark.sql(create TableStr)

//该 SQL 实际上传入的是一个字符串,该字符串在上面的代码“val createTableStr=”进行了定义,而定义字符串时使用了""",而这种创建字符串的方式之前已经进行过学习,就不多做赘述。

接下来把 create TableStr 传入到 sql 方法当中,把它当做一条 sql 语句执行,执行该语句后即可加载数据到数据库的某一张表中。

spark.sal("LOAD DATA INPATH '/dataset/studenttable10k’OVERWRITE INTO TABLE student")

//LOAD DATA INPATH:加载数据到数据库的表中

//而该表无论是内部表和外部表都已经指定了其存在的位置,但是通过 LOAD DATA 命令会把 HDFS 上该位置的文件移动到该位置里,也就是该处会存在风险,有可能刚刚的文件已经移动到新创建的 Hive 表里了。因此,稍后还要再进行上传。

//OVERWRITE INTO TABLE student:指定 overwrite,若数据已经存在,直应对原始的数据进行覆盖掉。

spark.sal("select * from student limit 100").show()

//查询数据,并限制显示数据不超过 100 条。

2、拷贝代码到集群中运行

(1)拷贝除最后一句的其余命令

(2)进入集群,重新上传文件

hdfs dfs -put studenttab10lk /dataset/

//将文件 studenttab10lk 上传到 dataset 目录下

spark-shell  --master local [6]

//重新进入 spark-shell 的命令窗口中,并指定 local 的线程数为 6,运行。

paste

//使用 paste 粘贴模式将拷贝的命令语句粘贴,点击回车,并点击 ctrl+D 运行代码,结果显示为 res0:

org.apache.spark.sql.Date

Frame =  [ ]

spark.sql("select * from student limit 100)

//从 student 中进行相应的查询,查出 100 条数据,查询结果显示为

res1:org.apache.spark.sql.DateFrame = [name:string,ag

e:int ... ]more field

//注意:查出的 100 条数据放在了 DateFrame 中,而放在 DateFrame 即可以直接通过 res1(该 DateFrame 的变量名)进行相应的处理和操作。

如 res1=where( "age>50").show(),相当于先执行一条 sql 语句查出数据,再通过这种命令式的 API 去操作数据。运行该处理代码,发现运行结果显示的数据所有都大于 50 岁,运行结果无误。

相关文章
|
3月前
|
SQL 存储 HIVE
Hive中的表是如何定义的?请解释表的结构和数据类型。
Hive中的表是如何定义的?请解释表的结构和数据类型。
34 0
|
4月前
|
SQL 消息中间件 数据处理
DataX读取Hive Orc格式表丢失数据处理记录
DataX读取Hive Orc格式表丢失数据处理记录
128 0
|
4月前
|
SQL 分布式计算 数据库
【大数据技术Spark】Spark SQL操作Dataframe、读写MySQL、Hive数据库实战(附源码)
【大数据技术Spark】Spark SQL操作Dataframe、读写MySQL、Hive数据库实战(附源码)
102 0
|
10天前
|
SQL 数据库 HIVE
Hive【基础知识 05】常用DDL操作(数据库操作+创建表+修改表+清空删除表+其他命令)
【4月更文挑战第8天】Hive【基础知识 05】常用DDL操作(数据库操作+创建表+修改表+清空删除表+其他命令)
21 0
|
1月前
|
SQL JSON 算法
hive学习笔记
hive学习笔记
|
2月前
|
SQL 消息中间件 Kafka
Flink部署问题之hive表没有数据如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
|
3月前
|
SQL 分布式计算 关系型数据库
Sqoop数据导入到Hive表的最佳实践
Sqoop数据导入到Hive表的最佳实践
|
4月前
|
SQL 存储 HIVE
❤️Hive的基本知识(二)Hive中的各种表❤️
❤️Hive的基本知识(二)Hive中的各种表❤️
30 0
|
4月前
|
存储 SQL 分布式计算
Hadoop(HDFS+MapReduce+Hive+数仓基础概念)学习笔记(自用)
Hadoop(HDFS+MapReduce+Hive+数仓基础概念)学习笔记(自用)
265 0
|
4月前
|
SQL 存储 关系型数据库
Presto【实践 01】Presto查询性能优化(数据存储+SQL优化+无缝替换Hive表+注意事项)及9个实践问题分享
Presto【实践 01】Presto查询性能优化(数据存储+SQL优化+无缝替换Hive表+注意事项)及9个实践问题分享
98 0