- 浏览: 229874 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
lwb314:
你的这个是创建的临时的hive表,数据也是通过文件录入进去的, ...
Spark SQL操作Hive数据库 -
yixiaoqi2010:
你好 我的提交上去 总是报错,找不到hive表,可能是哪里 ...
Spark SQL操作Hive数据库 -
bo_hai:
target jvm版本也要选择正确。不能选择太高。2.10对 ...
eclipse开发spark程序配置本地运行
本次例子通过scala编程实现Spark SQL操作Hive数据库!
Hadoop集群搭建:http://kevin12.iteye.com/blog/2273532
Spark集群搭建:http://kevin12.iteye.com/blog/2273532
数据准备
在/usr/local/sparkApps/SparkSQL2Hive/resources/目录下创建people.txt内容如下,name和age之间是"\t"分割
Michael 20
Andy 17
Justin 19
创建份数peopleScores.txt,内容如下,name和score之间用“\t”分割
Michael 98
Andy 95
Justin 68
代码实现
调度脚本
并将上面的程序打包成SparkSQL2Hive.jar,将SparkSQL2Hive.jar拷贝到/usr/local/sparkApps/SparkSQL2Hive/目录下面,并创建调度脚本run.sh,内容如下:
执行结果
详细执行的日志见附件 run.log
用hive来查看表内容和执行结果
至此,通过SparkSQL操作hive数据库成功!
Hadoop集群搭建:http://kevin12.iteye.com/blog/2273532
Spark集群搭建:http://kevin12.iteye.com/blog/2273532
数据准备
在/usr/local/sparkApps/SparkSQL2Hive/resources/目录下创建people.txt内容如下,name和age之间是"\t"分割
Michael 20
Andy 17
Justin 19
创建份数peopleScores.txt,内容如下,name和score之间用“\t”分割
Michael 98
Andy 95
Justin 68
代码实现
package com.imf.spark.sql import org.apache.spark.SparkConf import org.apache.spark.SparkContext import org.apache.spark.sql.hive.HiveContext /** * 通过spark sql操作hive数据源 */ object SparkSQL2Hive { def main(args: Array[String]): Unit = { val conf = new SparkConf(); conf.setAppName("SparkSQL2Hive for scala") conf.setMaster("spark://master1:7077") val sc = new SparkContext(conf) val hiveContext = new HiveContext(sc) //用户年龄 hiveContext.sql("use testdb") hiveContext.sql("DROP TABLE IF EXISTS people") hiveContext.sql("CREATE TABLE IF NOT EXISTS people(name STRING, age INT)ROW FORMAT DELIMITED FIELDS TERMINATED BY '\\t' LINES TERMINATED BY '\\n'") //把本地数据加载到hive中(实际上发生了数据拷贝),也可以直接使用HDFS中的数据 hiveContext.sql("LOAD DATA LOCAL INPATH '/usr/local/sparkApps/SparkSQL2Hive/resources/people.txt' INTO TABLE people") //用户份数 hiveContext.sql("use testdb") hiveContext.sql("DROP TABLE IF EXISTS peopleScores") hiveContext.sql("CREATE TABLE IF NOT EXISTS peopleScores(name STRING, score INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\\t' LINES TERMINATED BY '\\n'") hiveContext.sql("LOAD DATA LOCAL INPATH '/usr/local/sparkApps/SparkSQL2Hive/resources/peopleScore.txt' INTO TABLE peopleScores") /** * 通过HiveContext使用join直接基于hive中的两种表进行操作 */ val resultDF = hiveContext.sql("select pi.name,pi.age,ps.score " +" from people pi join peopleScores ps on pi.name=ps.name" +" where ps.score>90"); /** * 通过saveAsTable创建一张hive managed table,数据的元数据和数据即将放的具体位置都是由 * hive数据仓库进行管理的,当删除该表的时候,数据也会一起被删除(磁盘的数据不再存在) */ hiveContext.sql("drop table if exists peopleResult") resultDF.saveAsTable("peopleResult") /** * 使用HiveContext的table方法可以直接读取hive数据仓库的Table并生成DataFrame, * 接下来机器学习、图计算、各种复杂的ETL等操作 */ val dataframeHive = hiveContext.table("peopleResult") dataframeHive.show() } }
调度脚本
并将上面的程序打包成SparkSQL2Hive.jar,将SparkSQL2Hive.jar拷贝到/usr/local/sparkApps/SparkSQL2Hive/目录下面,并创建调度脚本run.sh,内容如下:
/usr/local/spark/spark-1.6.0-bin-hadoop2.6/bin/spark-submit \ --class com.imf.spark.sql.SparkSQL2Hive \ --files /usr/local/hive/apache-hive-1.2.1-bin/conf/hive-site.xml \ --master spark://master1:7077 \ /usr/local/sparkApps/SparkSQL2Hive/SparkSQL2Hive.jar #如果已经将msyql的驱动放到了spark的lib目录下面,则不用在添加下面的mysql的驱动了 #--driver-class-path /usr/local/hive/apache-hive-1.2.1-bin/lib/mysql-connector-java-5.1.35-bin.jar \
执行结果
详细执行的日志见附件 run.log
用hive来查看表内容和执行结果
root@master1:/usr/local/tools# hive SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/usr/local/hadoop/hadoop-2.6.0/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/usr/local/spark/spark-1.6.0-bin-hadoop2.6/lib/spark-assembly-1.6.0-hadoop2.6.0.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory] SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/usr/local/hadoop/hadoop-2.6.0/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/usr/local/spark/spark-1.6.0-bin-hadoop2.6/lib/spark-assembly-1.6.0-hadoop2.6.0.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory] Logging initialized using configuration in jar:file:/usr/local/hive/apache-hive-1.2.1-bin/lib/hive-common-1.2.1.jar!/hive-log4j.properties hive> show databases; OK default testdb Time taken: 1.013 seconds, Fetched: 2 row(s) hive> use testdb; OK Time taken: 0.103 seconds hive> show tables; OK people peopleresult peoplescores student student2 student3 student4 tbsogou tmp_pre_hour_seach_info Time taken: 0.082 seconds, Fetched: 9 row(s) hive> select * from people; OK Michael 20 Andy 17 Justin 19 Time taken: 1.252 seconds, Fetched: 3 row(s) hive> select * from peoplescores; OK Michael 98 Andy 95 Justin 68 Time taken: 0.142 seconds, Fetched: 3 row(s) hive> select * from peopleresult; OK SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. Michael 20 98 Andy 17 95 Time taken: 0.298 seconds, Fetched: 2 row(s) hive>
至此,通过SparkSQL操作hive数据库成功!
评论
2 楼
lwb314
2018-05-21
你的这个是创建的临时的hive表,数据也是通过文件录入进去的,如想读取hive数据库的数据应该怎么写?
1 楼
yixiaoqi2010
2017-04-13
你好 我的提交上去 总是报错,找不到hive表,可能是哪里的原因呢,--files也加上了,
但是我在./spark-shell --master 上就能访问hive表,不知道是什么问题
但是我在./spark-shell --master 上就能访问hive表,不知道是什么问题
发表评论
-
SparkStreaming pull data from Flume
2016-06-19 17:29 1182Spark Streaming + Flume Integra ... -
Flume push数据到SparkStreaming
2016-06-19 15:16 1881上节http://kevin12.iteye.com/blog ... -
Spark Streaming 统计单词的例
2016-06-19 14:55 3测试Spark Streaming 统计单词的例子 1.准 ... -
Spark Streaming 统计单词的例子
2016-06-19 12:29 3624测试Spark Streaming 统计单词的例子 1.准备 ... -
Spark SQL窗口函数
2016-04-22 07:18 2493窗口函数又叫着窗口分析函数,Spark 1.4版本SparkS ... -
Spark SQL内置函数应用
2016-04-22 07:00 8561简单说明 使用Spark SQL中的内置函数对数据进行 ... -
Spark SQL on hive配置和实战
2016-03-26 18:40 5479spark sql 官网:http://spark ... -
Hive分析搜索引擎的数据(搜狗实验室数据)
2016-03-13 12:48 1647搜狗实验室:http://www.sogou.com/labs ... -
Hive使用默认数据库derby报错及解决方法
2016-03-05 21:19 2969在使用derby数据库时,遇到了很多错误,报错信息和解决方法如 ... -
Hive1.2.1安装和使用(基于Hadoop2.6.0)
2016-03-05 20:22 8729安装hive,这里使用mysql作为hive的metastor ... -
eclipse开发hadoop环境搭建
2016-02-13 14:54 1341Hadoop2.6.0集群搭建完毕后,下面介绍一下eclips ... -
Spark RDD弹性表现和来源
2016-02-09 20:12 3809hadoop 的MapReduce是基于数 ... -
Spark内核架构
2016-02-07 12:24 9671.在将spark内核架构前,先了解一下Hadoop的MR,H ... -
spark集群HA搭建
2016-01-31 08:50 4427spark集群的HA图: 搭建spark的HA需要安装z ... -
Spark集群中WordCount运行原理
2016-01-31 07:05 2460以数据流动的视角解释一下wordcount运行的原理 pa ... -
eclipse开发spark程序配置在集群上运行
2016-01-27 08:08 9280这篇bolg讲一下,IDE开发的spark程序如何提交到集群上 ... -
eclipse开发spark程序配置本地运行
2016-01-27 07:58 12287今天简单讲一下在local模式下用eclipse开发一个简单的 ... -
spark1.6.0搭建(基于hadoop2.6.0分布式)
2016-01-24 10:11 5914本文是基于hadoop2.6.0的分布式环境搭建spark1. ... -
hadoop2.6.0集群的搭建方法
2016-01-23 22:37 32931.集群环境的安装 1.1工具软件版本说明(软件尽量去官网下载 ... -
Hadoop Shuffle(洗牌)过程
2014-03-25 14:26 992博客来源:http://www.wnt.c ...
相关推荐
Spark SQL的DataFrame接口支持多种数据源的操作。一个DataFrame可以进行RDDs方式的操作,也可以被注册为临时表。把DataFrame注册为临时表之后,就可以对该DataFrame执行SQL查询。 Spark SQL的默认数据源为Parquet...
DataFrame 和 SQL 操作 MLlib 操作 缓存 / 持久化 CheckPointing 累加器和广播变量 应用程序部署 监控应用程序 性能 降低批处理的时间 设置合理的批处理间隔 内存 容错语义 迁移指南(从 0.9.1 或者更...
文档主要介绍了环境搭建和配置使用 1. 什么是Spark SQL Spark SQL的一个用途是...spark 通过DataFrame操作大量的数据源,包括外部文件(如 json、avro、parquet、sequencefile 等等)、Hive、关系数据库、cassandra等
pool:MySQL连接池,通过自定义MySQL连接池,实现对MySQL数据库 的操作 utils:工具类,提供了日期时间工具类、数字格式工具类、参数工具类、字符串工具类、校验工具类等工具类, 里面的类有: DateUtils:时间工具类...
圣经 英文|介绍Scriptis用于交互式数据分析,包括脚本开发(SQL,Pyspark,HiveQL),任务提交(Spark,Hive),UDF,功能,资源管理和智能诊断。产品特点脚本编辑器:支持多语言,自动完成,语法突出显示和SQL语法...
dataCompare 是一个数据库比对工具:支持hive表数据比对,mysql、Doris 数据比对,实现自动化配置进行数据比对,避免频繁写sql 进行处理,后续考虑支持ck等等 功能介绍 (1)低代码配置,即可实现数据表的对比,不...
通过学习Spark,我了解了其基本概念和核心组件,如RDD(弹性分布式数据集)、Spark SQL、Spark Streaming和MLlib等。我学会了使用Spark编写分布式的数据处理程序,并通过调优技巧提高了程序的性能。在实践过程中,我...
》数据存取-》数据挖掘与分析-》数据展示与应用 大数据技术生态 数据采集 数据存储 SQL 引擎 离线计算 流式计算 多维分析 数据挖掘 Sqoop Flume HDFS Hbase PGXZ MongoDB Spark SQL HAWQ Hive Impala MR Spark Storm...
主要内容包括Hadoop环境配置、Hadoop分布式文件系统(HDFS)、Hadoop分布式计算框架MapReduce、Hadoop资源调度框架YARN与Hadoop新特性、Hadoop分布式数据库HBase、数据仓库Hive、大数据离线处理辅助系统、Spark Core...
数据规模超大,数据时效性高,可节约千倍IO,可对接外部数据源Oracle、Mysql、Kafka、Hive、Hbase、File、HDFS File等,可以与接口层Hive SQL、JDBC、WebService直接进行交互;同时支持跨集群数据同步,支持多种不同...
SQL DDL,例如“创建/删除/更改数据库”,“创建/删除/更改表”。 SQL DML,例如“ CREATE TABLE tbl AS SELECT”,“ INSERT INTO ...”,“ LOAD DATA [LOCAL] INPATH”,“ INSERT OVERWRITE [LOCAL] DIRECTORY...
Hadoop是个很流行的分布式计算解决方案,是Apache的一个开源项目名称,核心部分包括HDFS及...Spark是一个类似MapReduce的并行计算框架,也提供了类似的HIVE的Spark SQL查询接口,Hive是基于hadoop的数据分析工具。
与此一起,Apache Hive、No SQL 也是这种收费。 信息提取被认为是必不可少的。 其原因在于非结构化文本数据的快速增长。 因此,它被认为是一个计算密集型和 MapReduce 并行的数据库管理系统。 这些被应用于评估巨大...
b)大数据计算平台HIVE: 需要在HIVE中注册数据库表信息,将数据库的表映射成HIVE表,通过Hive-SQL进行数据读取,并在HIVE中进行运算。 数据库访问大数据计算平台 大数据计算平台可以将数据,例如计算结果,写入到...
b)大数据计算平台HIVE: 需要在HIVE中注册数据库表信息,将数据库的表映射成HIVE表,通过Hive- SQL进行数据读取,并在HIVE中进行运算。 2. 数据库访问大数据计算平台 大数据计算平台可以将数据,例如计算结果,写入...
b)大数据计算平台HIVE: 需要在HIVE中注册数据库表信息,将数据库的表映射成HIVE表,通过Hive- SQL进行数据读取,并在HIVE中进行运算。 2. 数据库访问大数据计算平台 大数据计算平台可以将数据,例如计算结果,写入...
数据生成器如果你在从事大数据BI的工作,想对比一下MySQL、GreenPlum、Elasticsearch、Hive、Spark SQL、Presto、Impala、Drill、HAWQ、Druid、Pinot、Kylin、ClickHouse、Kudu等不同实现方案之间的表现,那你就需要...
1)首先,XSQL提供了一种使用标准SQL从NoSQL数据库读取数据的解决方案,因此大数据工程师可以专注于数据,而API具有特殊数据源。 2)XSQL致力于优化SQL执行的执行计划以及监视每个SQL的运行状态,从而使用户的工作...
SparkSQL:提供通过ApacheHive的SQL变体Hive查询语言(HiveQL)与Spark进行交互的API。每个数据库表被当做一个RDD,SparkSQL查询被转换为Spark操作。对熟悉Hive和HiveQL的人,Spark可以拿来就用。SparkStrea