背景

spark-shell是一个scala编程解释运行环境,能够通过编程的方式处理逻辑复杂的计算,但对于简单的类似sql的数据处理,比方分组求和,sql为”select g,count(1) from sometable group by g”,须要写的程序是:

val hive = neworg.apache.spark.sql.hive.HiveContext(sc)

import hive._

val rdd = hql(“selectg,count(1) from sometable group by g”)

rdd.collect

看起来繁琐。对于仅仅注重业务数据的人来说,附加了过多的spark工具的内容。

让提交sql命令easy

用spark-shell的-i參数设定启动脚本,能够省去hive变量定义和import两句。

用面向对象编程把后两句能够合并变为hql(“select g,count(1) from sometable group by g”).collect。

用scala隐形转换再简单为“selectg,count(1) from sometable group by g”.hqlgo。

用scala省略括号特性,能够写成“selectg,count(1) from sometable group by g” hqlgo。

简化后的语句:“select g,count(1) from sometable group by g”
hqlgo

假设分多行写能够写成:

“””

selectg,count(1)

from sometable

group by g

“”” hqlgo

让结果保存easy

查询结果保存须要写的程序:

val rdd = hql(“selectg,count(1) from sometable group by g”)

rdd.saveAsTextFile(“hdfs:/somedir”)

同上面的sql提交类似,简化后的语句:“select g,count(1) from sometable group by g”saveto “hdfs:/somedir”

多行形式:

“””

selectg,count(1)

from sometable

group by g”””saveto “hdfs:/somedir”

注:

1)多行写时saveto与前面不能再分行。后面的路径也不能再分行

2)假设保存到本地文件,文件应包括扩展名后缀

3)原spark实现的输出格式有问题,hive不能正确解析数据结构,新改的定制版已解决

让读取文件创建内存表easy

对hdfs中的数据进行sql,假设想在hive中创建表则用”create externaltable ...” hqlgo就可以;假设仅仅创建内存表做数据处理,须要写的程序:

val rdd =sc.textFile(“hdfs:/somedir”)

case class SomeClass(name:String,age:Int,weight:Double)

val schemardd = rdd.map(_.split("\t")).map(t=>SomeClass (t(0),t(1),t(2)))

hive.registerRDDAsTable(schemardd,"sometable")

hql(“selectg,count(1) from sometable group by g”).collect

简化后的语句:

"create table sometable (name string,age int,weightdouble)"from "hdfs:/somedir"

“selectg,count(1) from sometable group by g” hqlgo

多行形式:

“””

create tablesometable (

name string,

age int,

weight double)

“”” from"hdfs:/somedir"

“selectg,count(1) from sometable group by g” hqlgo

注:

1)”create table ”需严格按此写,create后、table后必须有一个空格

2)输出路径为了避免覆盖大的文件夹,全路径字符长度必须大于等于24个字符

结果检查

计算结果可能是数据表、也可能输出到文件。

数据表检查:”sometable” isok

文件检查:”somefile.txt” isok

“hdfs:/somedir” isok

推断的标准是文件不为空,长度大小大于0;路径不为空。以下存在长度大于的文件;数据表记录条数大于0。

注:

1)文件应包括扩展名后缀,在输入的字符串中假设包括“.”、“/”则觉得是文件或文件夹,不包括觉得是数据表

2)假设想把查询结果保存到内存用val data = "select * from testperson" hqlresult,查看内存中查询的结果用do show data

定制spark的启动

/sysdir/spark-1.0.0/bin/myspark

输入help能够得到帮助。

Spark定制的启动shell脚本:http://blog.csdn.net/hyalone2010/article/details/37566699

spark定制的start.scala:http://blog.csdn.net/hyalone2010/article/details/37567203

spark定制之五:使用说明的更多相关文章

  1. Spark Streaming之五:Window窗体相关操作

    SparkStreaming之window滑动窗口应用,Spark Streaming提供了滑动窗口操作的支持,从而让我们可以对一个滑动窗口内的数据执行计算操作.每次掉落在窗口内的RDD的数据,会被聚 ...

  2. 通过案例对 spark streaming 透彻理解三板斧之一: spark streaming 另类实验

    本期内容 : spark streaming另类在线实验 瞬间理解spark streaming本质 一.  我们最开始将从Spark Streaming入手 为何从Spark Streaming切入 ...

  3. 【Spark深入学习 -14】Spark应用经验与程序调优

    ----本节内容------- 1.遗留问题解答 2.Spark调优初体验 2.1 利用WebUI分析程序瓶颈 2.2 设置合适的资源 2.3 调整任务的并发度 2.4 修改存储格式 3.Spark调 ...

  4. Dream_Spark版本定制第一课

    从今天起,我们踏上了新的Spark学习旅途.我们的目标是要像Spark官方机构那样有能力去定制Spark. 一.  我们最开始将从Spark Streaming入手. 为何从Spark Streami ...

  5. Spark Streaming之一:整体介绍

    提到Spark Streaming,我们不得不说一下BDAS(Berkeley Data Analytics Stack),这个伯克利大学提出的关于数据分析的软件栈.从它的视角来看,目前的大数据处理可 ...

  6. spark优化——依赖包传入HDFS_spark.yarn.jar和spark.yarn.archive的使用

    一.参数说明 启动Spark任务时,在没有配置spark.yarn.archive或者spark.yarn.jars时, 会看到不停地上传jar,非常耗时:使用spark.yarn.archive可以 ...

  7. MaxCompute Spark开发指南

    0. 概述 本文档面向需要使用MaxCompute Spark进行开发的用户使用.本指南主要适用于具备有Spark开发经验的开发人员. MaxCompute Spark是MaxCompute提供的兼容 ...

  8. Learning Spark中文版--第五章--加载保存数据(2)

    SequenceFiles(序列文件)   SequenceFile是Hadoop的一种由键值对小文件组成的流行的格式.SequenceFIle有同步标记,Spark可以寻找标记点,然后与记录边界重新 ...

  9. SNF开发平台WinForm之五-高级查询使用说明-SNF快速开发平台3.3-Spring.Net.Framework

    5.1运行效果: 5.2开发实现: 1.按上面效果来说,先来看一下在程序当中如果调用.第一步在页面拖拽一个按钮为“高级查询”,事件上写下如下代码: 如果是单表查询的话,只需要传GridView就行,如 ...

随机推荐

  1. Excel文件导入导出

    /**     * 导入Excel文件数据     *      * @param file 将要导入的Excel文件     * @param fileCheckKeyWord 用于判断导入文件是否 ...

  2. 6.11---字节输入流数据根据字节输出流存到文件中---io流概念及分类---文件存储的原理和记事本打开的原理---字节流读取文件的原理---文件复制的原理

  3. iOS动画——CoreAnimation

    CoreAnimation在我之前的UIKit动画里面简单的提了一句CoreAnimation动画,其实大家别看它类库名种有个animation,实际上animation在这个库中只占有很小的地位. ...

  4. 【转】 Java 集合系列07之 Stack详细介绍(源码解析)和使用示例

    概要 学完Vector了之后,接下来我们开始学习Stack.Stack很简单,它继承于Vector.学习方式还是和之前一样,先对Stack有个整体认识,然后再学习它的源码:最后再通过实例来学会使用它. ...

  5. JavaScript 封装插件学习笔记(一)

    此篇只是笔记,在借鉴.参考.模仿的过程,可能不完整,请多指教! 定义插件名称要注意命名冲突,防止全局污染. 1.第一种Javascript对象命名:(Javascript语言是“先解析,后运行”,解析 ...

  6. 移动web——bootstrap栅格系统

    基本简介 1.Bootstrap 提供了一套响应式.移动设备优先的流式栅格系统,随着屏幕或视口(viewport)尺寸的增加,系统会自动分为最多12列 2.栅格系统用于通过一系列的行(row)与列(c ...

  7. python读取单个文件操作

    python读取单个文件,参考<笨方法学python>的第15节. 运行方式是采用:python python文件名 要读取的文件名 代码中 script, filename = argv ...

  8. java实例1

    1.满天星星 import java.awt.*; public class xinxin { public static void main(String[] args) { Frame w = n ...

  9. (转)Struts2快速入门

    http://blog.csdn.net/yerenyuan_pku/article/details/66187307 Struts2框架的概述 Struts2是一种基于MVC模式的轻量级Web框架, ...

  10. 【第8篇】:Python之面向对象

    python之--------封装 一.封装: 补充封装: 封装: 体现在两点: 1.数据的封装(将数据封装到对象中) obj = Foo('宝宝',22) 2.封装方法和属性,将一类操作封装到一个类 ...