Spark 整合hive 实现数据的读取输出

实验环境: linux centOS 6.7 vmware虚拟机

spark-1.5.1-bin-hadoop-2.1.0

apache-hive-1.2.1

eclipse 或IntelJIDea 本次使用eclipse.

代码:

import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.sql.DataFrame;
import org.apache.spark.sql.hive.HiveContext;
public class SparkOnHiveDemo {
public static void main(String[] args) {

		// 首先还是创建SparkConf
		SparkConf conf = new SparkConf().setAppName("HiveDataSource");
		// 创建JavaSparkContext
		JavaSparkContext sc = new JavaSparkContext(conf);
		// 创建HiveContext,注意,这里,它接收的是SparkContext作为参数,不是JavaSparkContext
		HiveContext hiveContext = new HiveContext(sc.sc());

		//1.可以使用HiveContext 下面的sql(xxx语句)执行HiveSQL语句
		//1 .删除表,创建表
		// stars_infos ,stars_scores
		hiveContext.sql("DROP TABLE IF EXISTS stars_infos");
		hiveContext.sql("CREATE TABLE IF NOT EXISTS stars_infos(name STRING,age INT) "
				+ "row format delimited fields terminated by ‘,‘");

		//2.向表里面导入数据
		hiveContext.sql("LOAD DATA "
				+ "LOCAL INPATH "
				+ "‘/root/book/stars_infos.txt‘ "
				+ "INTO TABLE stars_infos");

		hiveContext.sql("DROP TABLE IF EXISTS stars_scores");
		hiveContext.sql("CREATE TABLE IF NOT EXISTS stars_scores(name STRING,score INT) "
				+ "row format delimited fields terminated by ‘,‘");

		hiveContext.sql("LOAD DATA "
				+ "LOCAL INPATH "
				+ "‘/root/book/stars_score.txt‘ "
				+ "INTO TABLE stars_scores");

		//3.从一张已经存在的hive表里面拿数据,转换为DF
		DataFrame superStarDataFrame = hiveContext.sql("SELECT si.name,si.age,ss.score "
				+ "FROM stars_infos si "
				+ "JOIN stars_scores ss ON si.name=ss.name "
				+ "WHERE ss.score>=90");

		//4.把DF的数据再持久化到hive中去,千万别和registerTemtable搞混了
		hiveContext.sql("DROP TABLE IF EXISTS superStar");
		superStarDataFrame.saveAsTable("superStar");

		//5.直接从Hive中得到DF
		hiveContext.table("superStar").show();

		sc.close();
	}
}

元数据:

可以下载附件,然后上传到指定的目录下。

把程序打包jar后上传到linux指定的目录下,写一个脚本。脚本附件见正文。具体内容修改即可。

运行脚本就可以了。当然要保证MySQL数据库正常,hive正常。

时间: 2024-10-01 04:02:30

Spark 整合hive 实现数据的读取输出的相关文章

spark 整合 hive

spark-shell 整合 hive ------------------------------------------------------------------------------------------------------------------------------- 1.将 hive/conf/hive-site.xml 拷贝到 spark/conf 下 (目前只是在spark的master节点112,执行以下针对hive-site.xml 和各种jar的  操作,分

使用spark对hive表中的多列数据判重

本文处理的场景如下,hive表中的数据,对其中的多列进行判重deduplicate. 1.先解决依赖,spark相关的所有包,pom.xml spark-hive是我们进行hive表spark处理的关键. <dependencies> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.10</artifactId> <version

Spark和Hive的整合

Spark和Hive的整合 node1 spark master node2 hive 的服务端-->metastore server 1.拷贝 hive-site.xml 到 spark master的 conf 下 node1 <configuration> <property> <name>hive.metastore.uris</name> <value>thrift://node2:9083</value> <d

hadoop、spark、hive、solr、es与YDB在车辆即席分析上的对比分析

自2012年以来,公安部交通管理局在全国范围内推广了机动车缉查布控系统(简称卡口系统),通过整合共享各地车辆智能监测记录等信息资源,建立了横向联网.纵向贯通的全国机动车缉查布控系统,实现了大范围车辆缉查布控和预警拦截.车辆轨迹.交通流量分析研判.重点车辆布控.交通违法行为甄别查处及侦破涉车案件等应用.在侦破肇事逃逸案件.查处涉车违法行为.治安防控以及反恐维稳等方面发挥着重要作用. 随着联网单位和接入卡口的不断增加,各省市区部署的机动车缉查布控系统积聚了海量的过车数据.截至目前,全国32个省(区.

hive-hbase-handler方式导入hive表数据到hbase表中

Hive与HBase的整合功能的实现是利用两者本身对外的API接口互相进行通信,相互通信主要是依靠hive-hbase-handler.jar工具类 : hive-hbase-handler.jar在hive的lib包中而不是在hbase的lib中,hive0.6版本以后: 创建hive表的同时创建hbase表,删除 hive表的同时也会删除对应的hbase表. 参见官方文档:https://cwiki.apache.org/confluence/display/Hive/HBaseIntegr

Spark整合kafka0.10.0新特性(二)

接着Spark整合kafka0.10.0新特性(一)开始 import org.apache.kafka.clients.consumer.ConsumerRecord import org.apache.kafka.common.serialization.StringDeserializer import org.apache.spark.streaming.kafka010._ import org.apache.spark.streaming.kafka010.LocationStrat

presto集群安装&整合hive|mysql|jdbc

Presto是一个运行在多台服务器上的分布式系统. 完整安装包括一个coordinator(调度节点)和多个worker. 由客户端提交查询,从Presto命令行CLI提交到coordinator. coordinator进行解析,分析并执行查询计划,然后分发处理队列到worker中. 目录: 搭建前环境准备 集群计划 连接器 安装步骤 配置文件 运行presto 整合hive测试 整合mysql测试 整合jdbc测试 1.搭建前环境准备 CentOS 6.7 java8 Python3.4.4

12.spark sql之读写数据

简介 ??Spark SQL支持多种结构化数据源,轻松从各种数据源中读取Row对象.这些数据源包括Parquet.JSON.Hive表及关系型数据库等. ??当只使用一部分字段时,Spark SQL可以智能地只扫描这些字段,而不会像hadoopFile方法一样简单粗暴地扫描全部数据. Parquet ??Parquet是一种流行的列式存储格式,可以高效地存储具有嵌套字段的记录.Parquet自动保存原始数据的类型,当写入Parquet文件时,所有的列会自动转为可空约束. scala // Enc

Hive 官方手册翻译 -- Hive DDL(数据定义语言)

Hive DDL(数据定义语言) Confluence Administrator创建, Janaki Lahorani修改于 2018年9月19日 原文链接 https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL 翻译:Google Google翻译,金山软件 金山词霸 校对:南大通用 范振勇 (2018.9.26) 一.概述 这里是HiveQL DDL语句的文档,其中包括: CREATE 数据库/SCHEMA,表