`
Kevin12
  • 浏览: 236061 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Spark SQL on hive配置和实战

阅读更多
spark sql 官网:http://spark.apache.org/docs/latest/sql-programming-guide.html#starting-point-sqlcontext

首先要配置好hive,保存元数据到mysql中,参考:http://kevin12.iteye.com/blog/2280777

然后配置Spark SQL,
1.配置hive-site.xml
在master1上的/usr/local/spark/spark-1.6.0-bin-hadoop2.6/conf目录创建hive-site.xml文件,内容如下:
<configuration>
<property>
    <name>hive.metastore.uris</name>
    <value>thrift://master1:9083</value>
    <description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description>
  </property>
</configuration>

这个配置信息从hive的目录$HIVE_HOME/conf/hive-default.xml.template文件中找到的,默认情况下的value是空值;
2.配置驱动
将$HIVE_HOME/lib/mysql-connector-java-5.1.35-bin.jar 中的mysql驱动拷贝到$SPARK_HOME/lib/下面即可。

注意:
因为之前我spark环境配置了Zookeeper,做HA,现在不在练习HA,将HA的配置去掉。如果不去掉,必须启动Zookeeper集群才可以单独一台节点上启动spark-shell等;
因为我在master1、worker1、worker2上安装了Zookeeper,所以,要将这三台节点上的$SPARK_HOME/conf/spark-env.sh文件中的SPARK_DAEMON_JAVA_OPTS去掉,并且将配置HA是注释的SPARK_MASTER_IP参数的注释去掉;
export SPARK_MASTER_IP=master1
#export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=master1:2181,worker1:2181,worker2:2181 -Dspark.deploy.zookeeper.dir=/spark"

3.启动hive的metastore后台进程
将日志打印到/root/logs/hive目录下,如果目录不存在则先创建
root@master1:~/logs# hive --service metastore >> /root/logs/hive/metastore.log 2>& 1&
因为配置了上面的hive.metastore.uris,所以必须启动hive的service metastore后台进程才可以执行./spark-shell --master spark://master1:7077和./spark-sql --master spark://master1:7077命令。
在$SPARK_HOME/bin下执行 ./spark-shell --master spark://master1:7077命令。
然后依次执行下面的命令
scala> val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc)
scala> hiveContext.sql("show databases").collect.foreach(println)
scala> hiveContext.sql("use testdb").collect.foreach(println)
scala> hiveContext.sql("show tables").collect.foreach(println)
res5: org.apache.spark.sql.DataFrame = [tableName: string, isTemporary: boolean]
scala> hiveContext.sql("show tables").collect.foreach(println)
[student,false]
[student2,false]
[student3,false]
[student4,false]
[tbsogou,false]
[tmp_pre_hour_seach_info,false]
scala> hiveContext.sql("select d,count(*)cnt from tbsogou group by d ").collect.foreach(println)
当同时用hive和spark sql运行查询时,如果没有资源spark sql会打印下面的语句,一直等待资源释放,获取资源后会执行spark sql进行查询;
16/03/25 20:13:04 WARN scheduler.TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
16/03/25 20:13:19 WARN scheduler.TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
16/03/25 20:13:34 WARN scheduler.TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources


先将$SPARK_HOME下面的examples/src/main/resources/中的所有文件都上传到hdfs的/library/examples/src/main/resources/目录中以备后用。

Starting Point: SQLContext

valsc:SparkContext// An existing SparkContext.valsqlContext=neworg.apache.spark.sql.SQLContext(sc)// this is used to implicitly convert an RDD to a DataFrame.importsqlContext.implicits._
Creating DataFrames

valsc:SparkContext// An existing SparkContext.valsqlContext=neworg.apache.spark.sql.SQLContext(sc)
valdf=sqlContext.read.json("examples/src/main/resources/people.json")// Displays the content of the DataFrame to stdoutdf.show()
DataFrame Operations

val sc: SparkContext // An existing SparkContext.
val sqlContext = new org.apache.spark.sql.SQLContext(sc)

// Create the DataFrame
val df = sqlContext.read.json("examples/src/main/resources/people.json")

// Show the content of the DataFrame
df.show()
// age  name
// null Michael
// 30   Andy
// 19   Justin

// Print the schema in a tree format
df.printSchema()
// root
// |-- age: long (nullable = true)
// |-- name: string (nullable = true)

// Select only the "name" column
df.select("name").show()
// name
// Michael
// Andy
// Justin

// Select everybody, but increment the age by 1
df.select(df("name"), df("age") + 1).show()
// name    (age + 1)
// Michael null
// Andy    31
// Justin  20

// Select people older than 21
df.filter(df("age") > 21).show()
// age name
// 30  Andy

// Count people by age
df.groupBy("age").count().show()
// age  count
// null 1
// 19   1
// 30   1


分享到:
评论

相关推荐

    基于CDH 6.3.0 搭建 Hive on Spark 及相关配置和调优

    ### 基于CDH 6.3.0 搭建 Hive on Spark 及相关配置和调优 #### 概述 随着大数据技术的发展,Hadoop生态系统不断成熟与完善,其中Apache Hive作为数据仓库工具,支持通过SQL语句进行查询、分析存储在Hadoop文件系统...

    项目实战——Spark将Hive表的数据写入ElasticSearch(Java版本)

    在本项目实战中,我们将探讨如何使用Java编程语言,结合Spark和Hive,将Hive中的数据高效地导入到ElasticSearch(ES)中,并利用ES的别名机制实现数据更新的平滑过渡。以下是对这个流程的详细解析: 1. **Hive数据...

    sql on big data

    Spark SQL是Spark的一个模块,它扩展了Spark的功能,允许用户直接使用SQL来交互式地查询和操作数据集。Spark SQL还支持多种数据源,包括HDFS、Cassandra和HBase等。 4. Presto与Impala: Presto和Impala是两种高...

    通过案例实战掌握Spark编程模型内幕.pptx

    针对Spark的学习,可以参加一系列的实战课程,例如"决战大数据‘Spark纯实战’公益大讲坛",涵盖了Spark集群部署、编程模型、内核运行、SQL、Hive on Spark、Streaming、GraphX、SparkR、Tachyon、运维与调优等多个...

    大数据技术之hive学习文档

    - **企业级优化**:包括分区、桶、优化查询(如 Join 优化、Subquery 优化等)、Hive on Spark 提升性能。 - **实战项目**:Hive 常用于广告点击率分析、用户行为分析、日志处理等大数据场景。 - **常见错误及解决...

    HIVE教程内含源码以及说明书可以自己运行复现.zip

    总结来说,Hive教程涵盖了Hive的基础知识和实战技能,从安装配置到实际操作,再到高级特性和接口使用,为学习者提供了全面的学习路径。通过这个教程,你不仅可以理解Hive的工作原理,还能掌握实际操作Hive的技能,...

    Spark技术内幕深入解析Spark内核架构设计与实现原理

    9. **Spark SQL**:Spark SQL提供了SQL接口和DataFrame API,允许用户在Spark上执行结构化查询,并与Hive、HDFS等数据源无缝集成。 10. **Spark Streaming**:Spark Streaming处理实时数据流,通过微批处理模拟流...

    ApacheSparkCloudandOnPrem.zip

    2. Spark on AWS:Amazon Elastic MapReduce (EMR) 提供了预配置的Spark集群,用户可以通过AWS管理控制台或CLI轻松创建和管理。 3. Spark on Azure:Azure HDInsight 提供托管的Spark服务,与Azure其他服务深度集成...

    Spark分布式内存计算框架视频教程

    11.分布式SQL引擎(spakr-sql和Spark ThriftServer) 12.Catalyst 优化器 第四章、离线综合实战 1.综合实战概述(需求、调研、业务) 2.环境搭建(大数据环境和应用开发环境) 3.项目初始化(工具类和属性文件) 4....

    Hudi-0.9.0在win10的IDFEA中集中Spark3.0、Flink-1.12.x的基本使用记录

    《Hudi-0.9.0在Windows上的IDFEA集成Spark3.0与Flink-1.12.x实战指南》 Hudi(Hadoop Upsert Delta Tables)是一款开源的、面向大数据处理的实时更新工具,它允许对HDFS上的数据进行插入、更新和删除操作,提供了一...

    mysql经典50题_大数据_mysql经典50题_mysql经典五十题_hive_

    - **Hive on Tez与Hive on Spark**:优化查询执行引擎,提升性能。 9. **大数据实战** - **数据清洗**:在Hive中处理缺失值、异常值和重复值。 - **数据分析**:使用SQL进行大数据的统计分析,如聚类、关联规则...

    Hadoop实战培训教程(部署篇)_V3

    Hive是一个建立在Hadoop之上的数据仓库工具,它提供了SQL-like查询语言HiveQL。Hive的安装步骤包括: 1. **获取安装包**:下载Hive安装包,如`apache-hive-1.2.1-bin.tar.gz`。 2. **解压安装包**:将安装包解压到...

    LearningSpark

    1. Spark SQL:提供SQL查询和DataFrame/Dataset API,适用于结构化数据处理。 2. Spark Streaming:处理连续数据流,实现实时计算。 3. MLlib:Spark的机器学习库,包含各种算法和工具。 4. GraphX:处理图数据,...

    架构参考资料

    它可能涵盖Spark的基本概念,如RDD(弹性分布式数据集)、Spark SQL、Spark Streaming以及Spark MLlib机器学习库的使用。读者可能能从中了解到如何从零开始搭建Spark环境,执行批处理和实时流处理任务,并掌握Spark...

    hadoop2.x文档

    - Hive 的安装配置与使用方法。 - Pig 语法及数据分析流程。 - 使用SQL进行大数据集的查询与分析。 3. **数据深入分析的机器学习与图形计算:** - Mahout 和 Spark MLlib 的基本概念及其应用场景。 - 图形计算...

    大数据_45299.rar

    - **数据分析**:使用SQL-on-Hadoop引擎(如Impala、Hive)或数据可视化工具(如Tableau)进行查询和分析。 - **数据安全**:确保数据的隐私和安全性,采用加密、访问控制和审计策略。 在商业环境中,大数据已广泛...

    大数据平台基础架构指南 刘旭晖.zip

    4. 数据计算与查询:SQL-on-Hadoop解决方案如Presto、Hive、Impala等,使得在大数据环境中进行SQL查询成为可能。这些工具的使用场景、性能对比和优化技巧将在书中得到详细解释。 5. 流处理:随着实时数据处理需求的...

    数据仓库项目(仅代码)

    在实际的数据仓库项目中,可能会使用Hadoop、Spark等大数据处理框架进行数据预处理,用SQL Server、Oracle、Hive等作为数据仓库存储,使用Python或Java进行ETL编写,最后利用BI工具进行数据展现。这个“数据仓库项目...

Global site tag (gtag.js) - Google Analytics