spark定制之五:使用说明
背景
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定制之五:使用说明的更多相关文章
- Spark Streaming之五:Window窗体相关操作
SparkStreaming之window滑动窗口应用,Spark Streaming提供了滑动窗口操作的支持,从而让我们可以对一个滑动窗口内的数据执行计算操作.每次掉落在窗口内的RDD的数据,会被聚 ...
- 通过案例对 spark streaming 透彻理解三板斧之一: spark streaming 另类实验
本期内容 : spark streaming另类在线实验 瞬间理解spark streaming本质 一. 我们最开始将从Spark Streaming入手 为何从Spark Streaming切入 ...
- 【Spark深入学习 -14】Spark应用经验与程序调优
----本节内容------- 1.遗留问题解答 2.Spark调优初体验 2.1 利用WebUI分析程序瓶颈 2.2 设置合适的资源 2.3 调整任务的并发度 2.4 修改存储格式 3.Spark调 ...
- Dream_Spark版本定制第一课
从今天起,我们踏上了新的Spark学习旅途.我们的目标是要像Spark官方机构那样有能力去定制Spark. 一. 我们最开始将从Spark Streaming入手. 为何从Spark Streami ...
- Spark Streaming之一:整体介绍
提到Spark Streaming,我们不得不说一下BDAS(Berkeley Data Analytics Stack),这个伯克利大学提出的关于数据分析的软件栈.从它的视角来看,目前的大数据处理可 ...
- spark优化——依赖包传入HDFS_spark.yarn.jar和spark.yarn.archive的使用
一.参数说明 启动Spark任务时,在没有配置spark.yarn.archive或者spark.yarn.jars时, 会看到不停地上传jar,非常耗时:使用spark.yarn.archive可以 ...
- MaxCompute Spark开发指南
0. 概述 本文档面向需要使用MaxCompute Spark进行开发的用户使用.本指南主要适用于具备有Spark开发经验的开发人员. MaxCompute Spark是MaxCompute提供的兼容 ...
- Learning Spark中文版--第五章--加载保存数据(2)
SequenceFiles(序列文件) SequenceFile是Hadoop的一种由键值对小文件组成的流行的格式.SequenceFIle有同步标记,Spark可以寻找标记点,然后与记录边界重新 ...
- SNF开发平台WinForm之五-高级查询使用说明-SNF快速开发平台3.3-Spring.Net.Framework
5.1运行效果: 5.2开发实现: 1.按上面效果来说,先来看一下在程序当中如果调用.第一步在页面拖拽一个按钮为“高级查询”,事件上写下如下代码: 如果是单表查询的话,只需要传GridView就行,如 ...
随机推荐
- Hadoop Hive概念学习系列之hive里的优化和高级功能(十四)
在一些特定的业务场景下,使用hive默认的配置对数据进行分析,虽然默认的配置能够实现业务需求,但是分析效率可能会很低. Hive有针对性地对不同的查询进行了优化.在Hive里可以通过修改配置的方式进行 ...
- JQuery:常用知识点总结
jQuery本质上就是一个外部的js文件(jQuery.js),该文件中封装了很多js代码,实现了很多功能.并且jQuery有非常丰富的插件,大多数功能都有相应的插件解决方案.jQuery的宗旨是wr ...
- AIDL跨进程通信报Intent must be explicit
在Android5.0机子上采用隐式启动来调试AIDL时,会出现Intent must be explicit的错误,原因是5.0的机子不允许使用隐式启动方式,解决的方法是:在启动intent时添加i ...
- 打造最强NGINX HTTPS
SSL LABS 检测 完整配置如下 server { listen 443 ssl; server_name xxx.xxxke.com; ssl on; ssl_certificate /xxx/ ...
- abstract class和interface 抽象类与接口类的区别
抽象类与类型定义相关: 接口类与行为规范相关: 接口类不是类型. 抽象类:是不完整的类,函数实现未定义:可以继承,不可以实例化. 接口类:接口类不是类:是类间交互的规范:不能继承.不能实例化,只能实现 ...
- C# Winform 获得下拉框 选中的值
string PrintName = cmbPrinter.SelectedIndex.ToString(); PrintName = cmbPrinter.SelectedItem.ToString ...
- =new、=null、.clear()、system.gc()的区别
开发经验告诉我 = new是指向另一个地址空间 =null对象被回收 .clear()对象被清空,但是仍然指向原来的地址空间 这三种方式都并没有真正的清理内存 只有system.gc()是直接清理,但 ...
- 使用GetMirror一次镜像多个实体
public static void GetMirror(this ObjectIdCollection ids, Point3d p1, Point3d p2, bool s, params Ent ...
- / Vijos / 题库 / 1622 / 文件查找(HOI)
/ Vijos / 题库 /1622/文件查找(HOI) 描述 WINDOWS是一个很庞大的操作系统(当然啦,看占的硬盘空间就知道了),比如说,它的文件查找系统.现在,请你用PASCAL或者C或者C+ ...
- Linux系统学习之 一:新手必须掌握的Linux命令1
2018-10-03 16:04:12 一.常用系统工作命令 1.wget 命令 作用:用于在终端中下载网络文件. 格式:wget [参数] 下载地址 参数及作用: -b : 后台下载模式 -d:显示 ...