本文用到的测试数据person.txt

lijing  29

guodegang  45

heyunwei  30

yueyunpeng  100

rdd的分区数量,读取hdfs文件,默认是文件个数

rdd生成方式:

1) 并行化

2) 通过读取文件api方法生成

DataFrame的基础操作,详见官方API文档。将DataFrame存储详见官方API文档

DataFrame生成方式:

1)从rdd生成

2)读取hive表生成

创建hive表:

1)执行hive脚本

import org.apache.spark.sql.hive.HiveContext
val sqlContext = new HiveContext(sc)
import sqlContext._
//hive的多行脚本必须分开执行,否则会报错(无法执行多行脚本)
//sql("use dev;create table person(name string,age int)") 会报错
sql("use dev") //指定数据库
sql("create table person(name string,age int)") //创建表
sql("load data local inpath 'person.txt' into table person") //导入数据

2)通过dataframe创建

import org.apache.spark.sql.hive.HiveContext
val sqlContext = new HiveContext(sc)
case class Person(name:String,age:Int)
val rdd_person=sc.textFile("example/person.txt") //此处是hdfs路径
val person=rdd_person.map(line => line.split("\t")).map(line => Person(line(0),line(1).toInt)) //创建dataframe
val hive_person = sqlContext.createDataFrame(person)
hive_person.registerTempTable("hive_person")
sqlContext.sql("use dev")
/*
创建一个managed表
如果需要指定字段进行分区,需要调用方法partitionBy(colNames: String*);
mode方法用来指定存储方式:
SaveMode.Overwrite: overwrite the existing data.
SaveMode.Append: append the data.
SaveMode.Ignore: ignore the operation (i.e. no-op).
SaveMode.ErrorIfExists: default option, throw an exception at runtime.
*/ hive_person.write.mode(org.apache.spark.sql.SaveMode.Overwrite).saveAsTable("hive_person") sqlContext.sql("select * from hive_person limit 1").collect //查看下表是否创建成功,是否有数据

在上述脚本中用到了toInt函数,如果数据有异常,无法转化为int,可自定义函数,来进行处理

def parseInt(s: String): Int = try { s.toInt } catch { case _ => 0 }
parseInt("a")

 环境搭建

scala的Intelij IDEA环境搭建

在idea中最后打包jar包的时候,为了避免把目标环境已有的包再打包到jar包中导致体积过大,可在pom.xml中相应的依赖中加入

<scope>provided</scope>

或在菜单File-Project Structure中将Output Layout中多余的删掉

提交jar包到spark上

spark-submit --class 类名 --jar jar包 参数

如果类里需要传参,则"--jar"要去掉,否则报错

参考:

http://www.cnblogs.com/shishanyuan/p/4699644.html

http://lxw1234.com/archives/category/spark

https://taoistwar.gitbooks.io/spark-developer-guide/content/

spark-sql的更多相关文章

  1. Spark SQL 之 Data Sources

    #Spark SQL 之 Data Sources 转载请注明出处:http://www.cnblogs.com/BYRans/ 数据源(Data Source) Spark SQL的DataFram ...

  2. Spark SQL 之 DataFrame

    Spark SQL 之 DataFrame 转载请注明出处:http://www.cnblogs.com/BYRans/ 概述(Overview) Spark SQL是Spark的一个组件,用于结构化 ...

  3. 【原】Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL

    周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =.这三章主要讲Spark的运行过程(本地+集群),性能调优以及Spark ...

  4. Spark 官方文档(5)——Spark SQL,DataFrames和Datasets 指南

    Spark版本:1.6.2 概览 Spark SQL用于处理结构化数据,与Spark RDD API不同,它提供更多关于数据结构信息和计算任务运行信息的接口,Spark SQL内部使用这些额外的信息完 ...

  5. Spark SQL Example

     Spark SQL Example This example demonstrates how to use sqlContext.sql to create and load a table ...

  6. 通过Spark SQL关联查询两个HDFS上的文件操作

    order_created.txt   订单编号  订单创建时间 -- :: -- :: -- :: -- :: -- :: order_picked.txt   订单编号  订单提取时间 -- :: ...

  7. Spark SQL 之 Migration Guide

    Spark SQL 之 Migration Guide 支持的Hive功能 转载请注明出处:http://www.cnblogs.com/BYRans/ Migration Guide 与Hive的兼 ...

  8. Spark SQL 官方文档-中文翻译

    Spark SQL 官方文档-中文翻译 Spark版本:Spark 1.5.2 转载请注明出处:http://www.cnblogs.com/BYRans/ 1 概述(Overview) 2 Data ...

  9. Spark SQL 之 Performance Tuning & Distributed SQL Engine

    Spark SQL 之 Performance Tuning & Distributed SQL Engine 转载请注明出处:http://www.cnblogs.com/BYRans/ 缓 ...

  10. 基于Spark1.3.0的Spark sql三个核心部分

    基于Spark1.3.0的Spark sql三个核心部分: 1.可以架子啊各种结构化数据源(JSON,Hive,and Parquet) 2.可以让你通过SQL,saprk内部程序或者外部攻击,通过标 ...

随机推荐

  1. javascript访问级别

    JavaScript中没有官方的访问级别语法,JavaScript没有类似于Java语言智能搞得private或protected这样的访问级别关键字,默认情况下,,对象中所有的成员都是公有和可访问的 ...

  2. 百度touch的手势框架,touch.js

    今天,随便搜搜看到了一个新的手势库,也许能让我为现在使用者的hammer.js的手势库带来的烦恼而消除. 它是百度团队开发的,现在由百度云Clouda进行维护. 官网   http://touch.c ...

  3. NGINX关于配置PATHINFO

    最近在群里发现有很多小白不会配置pathinfo现贴出来配置代码照着配置就可以了     1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 2 ...

  4. swfupload上传

    swfupload多文件异步上传 多文件选择异步上传的原理 传统上:多个文件逐一选.PHP开始处理,循环上 PHP+Flash上:JS调用flash控,Flash批量选取并保持选取所有文件列 swfu ...

  5. 新写PHP HTTP断点续传类文件代码

    一个支持断点续传的PHP文件下载类文件,调用方法简单,类代码简洁,可记忆上次的下载的节点,实现累积下载,类名称download,类代码如下: function download($path,$file ...

  6. .Net冷知识之动态查找类型时的程序集路径问题

    今天就说说.Net中通过反射取得某个类型时,我们怎么知道这个类型在硬盘上的哪个角落?比如说,假如我们需要要求服务端动态载入某个数据源,那服务端怎么知道数据源在哪? 网上大部分的教程都写着,可以使用As ...

  7. 方便john破解linux密码批处理

    Title:方便john破解linux密码批处理 -- 2011-11-23 17:31 自定义文件HASH名和字典名批处理(单一文件): @echo offcolor 0asetlocal enab ...

  8. 怎样卸载goldengate

    1. Log on to the database server (as oracle) where the GoldenGate software isinstalled.2. Change dir ...

  9. html编码转换

    http://webdesign.about.com/od/localization/l/blhtmlcodes-math.htm http://www.cnblogs.com/terryglp/ar ...

  10. CAD2014启动出现loadlibrary failed with error 87

    系统win8.1 x64 安装AutoCAD2014完成后,启动出现:Loadlibrary failed with error 87:参数错误 重启,重装都没用.查了一晚上,在国外网站上找到解决办法 ...