Spark读写Hive

Spark读写Hive

文章目录

(一)配置本地域名映射

1.查看集群配置

在Linux查看hosts文件

bash 复制代码
vi /etc/hosts

2.将Linux中查看到的域名配置到Windows本地的hosts文件中

path 复制代码
C:\Windows\System32\drivers\etc\hosts

注意:此文件有权限限制,不能直接修改,修改的办法:搜索记事本,使用管理员身份打开记事本,然后从记事本打开hosts文件,然后再修改

(二)创建Hive表

1.要保证Hadoop集群是正常启动的

master和slave1节点上要能看到namenode守护进程

2.本地编辑一个t_student.txt文件

bash 复制代码
vi ~/t_student.txt

写入数据

txt 复制代码
1,zhangsan,male,18
2,lisi,female,20

保存并退出

3.上传文件到HDFS根目录

bash 复制代码
hdfs dfs -put ~/.t_student.txt /

4.进入hive

bash 复制代码
hive

5.创建数据库

sql 复制代码
--创建数据库
create database sparktest;

--使用数据库
use spark test;

--创建表
create table student(id int, name string, gender string, age int) row format delimited fields terminated by "," stored as textfile ;
--row format delimited fields terminated by "," 指定列分隔符为英文的逗号
--stored as textfile 存储为文本文件

--加载数据
load data inpath "/t_student.txt" overwrite into table student;
--load data加载数据
--inpath 指定路径
--"/t_student.txt" 具体的HDFS的路径
--overwrite into 覆盖写入
--table 指定表
--student 具体的表名

当执行完load data操作后,hdfs根目录下的t_student.txt文件会被移动到hive的数据目录下

6.查看数据

sql 复制代码
select * from student;

(三)IDEA中编写Spark代码读取Hive数据

1.环境配置

将hive-site.xml(路径: H I V E H O M E / c o n f )、 c o r e − s i t e . x m l 、 h d f s − s i t e . x m l (路径: HIVE_HOME/conf)、core-site.xml、hdfs-site.xml(路径: HIVEHOME/conf)、core−site.xml、hdfs−site.xml(路径:HADOOP_HOME/etc/hadoop)复制到IDEA项目的resource目录下

2.编写代码

scala 复制代码
import org.apache.spark.sql.SparkSession

/**
 * 使用DataFrame读取Hive表
 */
object spark_read_hive {
  def main(args: Array[String]): Unit = {

    //指定本地用户为root
    System.setProperty("HADOOP_USER_NAME","root")

    //创建SparkSession,作用:连接Spark
    val spark = SparkSession
      .builder()
      .master("local[*]") //指定运行的方式哦
      .appName("spark_read_hive") //程序的名字
      .enableHiveSupport() //开启Hive支持
      .getOrCreate()

    //查询Hive表
    //sparktest.student 数据库名.表名
    val df = spark.sql("select * from student");
    df.show()
  }
}

(四)IDEA中编写Spark代码写入数据到Hive

scala 复制代码
import org.apache.spark.sql.{Row, SparkSession}
import org.apache.spark.sql.types.{IntegerType, StringType, StructField, StructType}

/**
 * 使用DataFrame写入数据到Hive
 */
object spark_write_hive {
  def main(args: Array[String]): Unit = {

    //指定本地用户为root
    System.setProperty("HADOOP_USER_NAME", "root")

    //创建SparkSession,作用:连接Spark
    val spark = SparkSession
      .builder()
      .master("local[*]") //指定运行的方式哦
      .appName("spark_write_hive") //程序的名字
      .enableHiveSupport() //开启Hive支持
      .getOrCreate()

    //创建DataFrame
    //1. 创建schema
    val schema = StructType(List(
      StructField("id", IntegerType, true),
      StructField("name", StringType, true),
      StructField("gender", StringType, true),
      StructField("age", IntegerType, true)
    ))

    //2. 创建rows
    //2.1 创建RDD
    val dataRDD = spark.sparkContext.parallelize(Array(
      Array(3, "张三", "男", 18),
      Array(4, "李四", "女", 20)
    ))
    //2.2 创建rows
    val rows = dataRDD.map(x => Row(x(0), x(1), x(2), x(3)))
    //3. 合并
    val df = spark.createDataFrame(rows,schema)

    //在控制台显示DataFrame的内容
    //df.show()

    //写入Hive
    //方法一:通过临时表使用SQL语句添加数据
    df.createOrReplaceTempView("tmpTable")
    spark.sql("insert into student select * from tmpTable")
  }
}
相关推荐
Agentic AI人工智能与大数据8 小时前
数据产品运营指南:如何提升用户活跃度?这4个策略让数据产品不再“沉睡”
大数据·ai·产品运营
飞Link10 小时前
开发者必读:2026 欧盟“AI Omnibus”法案达成,技术合规性红线在哪里?
大数据
老纪的技术唠嗑局10 小时前
深度解析 LLM Wiki / Obsidian-Wiki / GBrain:Agent 时代知识的“自组织”与“自进化”
大数据·数据库·人工智能·算法
好赞科技12 小时前
2026年高口碑餐厅预约小程序排行榜:智能就餐新体验一键解锁
大数据·微信小程序
数据智能老司机12 小时前
深入解锁 dbt——Documentation:项目文档与数据文档
大数据
计算机毕业编程指导师12 小时前
【计算机毕设推荐】Python+Hadoop+Spark共享单车数据可视化分析系统 毕业设计 选题推荐 毕设选题 数据分析 机器学习 数据挖掘
大数据·hadoop·python·计算机·数据挖掘·spark·课程设计
计算机毕业编程指导师12 小时前
【计算机毕设】基于Hadoop的共享单车订单数据分析系统+Python+Django全栈开发 毕业设计 选题推荐 毕设选题 数据分析 机器学习 数据挖掘
大数据·hadoop·python·计算机·数据挖掘·spark·django
2601_9561394213 小时前
文体娱媒品牌全案公司哪家强
大数据·人工智能·python
塔望品牌咨询13 小时前
组织效率诊断框架:返工、解释、等待、救火,分别说明了什么
大数据·产品运营
塔能物联运维13 小时前
两相液冷:从“散热”到“控温”,重构高密度算力的热管理系统
大数据·人工智能