spark-shell使用指南. - 韩禹的博客
在2.0版本之前,Spark的主要编程接口是RDD(弹性分布式数据集),在2.0之后,则主推Dataset,他与RDD一样是强类型,但更加优化。RDD接口仍然支持,但为了更优性能考虑还是用Dataset的好。
在spark目录中运行bin/spark-shell,或将spark安装目录设为SPARK_HOME环境变量且将其$SPARK_HOME/bin加到PATH中,则以后可在任意目录执行spark-shell即可启动。
RDD可以从Hadoop的InputFormats文档(如hdfs文档)创建,也可读写本地文档,也可由其他RDD经转换而来。Dataset也具有这些性质。以读取文档为例,RDD时代可以在shell中通过sc.textFile(filename)直接读取,在Dataset则需要通过spark.read.textFile(filename)读取。
1. 读取Dataset方式
val dataset = spark.read.textFile(source_path)
其中spark.read返回的是一个DataFrameReader,所以上述方法其加载文本文档并返回一个string的Dataset,这个dataset仅包含单个名为”value”的列。
若文本文档的目录结构包含分区信息,在读到的dataset中也将被忽略,要想将这些分区信息作为schema列信息的话,需要用 大专栏 spark-shell使用指南. - 韩禹的博客text API, 看textFile的实现,
其也是用的text的特殊参数。
1.1 查看内容
dataset.collect().foreach(println) 或者 dataset.take(10).foreach(println)
其中collect返回所有记录,take(n)返回n条记录。
2. 读取Json为dataset并进行select操作
val dataset = spark.read.json(source_path)
spark.read.json可以返回DataFrame形式的数据
val data = dataset.select($"content", $"id", $"time").filter($"id"===01 && $"time"="2019-01-01")
返回 org.apache.spark.sql.Dataset[org.apache.spark.sql.Row] = [content: string, gid: bigint ... 1 more field]
val dataC = data.select(unbase64($"content")).map(s => new String(s.getAs[Array[Byte]](0), "gb2312"))
将content中的base64的内容解码为gb2312
val sample = dataC.take(10).foreach(println)
输出
spark-shell使用指南. - 韩禹的博客的更多相关文章
- Linux 桌面玩家指南:05. 发博客必备的图片处理和视频录制神器
特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之 ...
- Spark大型电商项目实战-及其改良之番外(1)-将spark前端页面效果高效拷贝至博客
Spark大型电商项目实战-及其改良这个系列的时间轴展示图一直在变....1-3篇是用图直接表示时间轴,用一段简陋的html代码表示时间表.第4篇开始才是用比较完整的前端效果,能移动.缩放时间轴,鼠标 ...
- 企业shell面试题:获取51CTO博客列表倒序排序考试题
#!/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin HTMLFILE=/home/oldboy/ht ...
- Writing a Windows Shell Extension(marco cantu的博客)
Writing a Windows Shell Extension This is a technical article covering the content of my last week s ...
- 韩天峰博客 php基础知识学习记录
http://rango.swoole.com 写好PHP代码真的不容易,给大家几个建议: 慎用全局变量,全局变量不好管理的,会导致你的代码依赖于全局变量,而耦合度太高. 一定不要复制粘贴代码,可重用 ...
- C#字符串操作,转自韩迎龙博客
1.1 字符串大小写 方法原型 string <strName>.ToUpper(); //返回字符串转换的大写形式 string <strName>.ToLower( ...
- Kafka 部署指南-好久没有更新博客了
最近到了一家新公司,很多全新技术栈要理解.每天都在看各类 English Offcial Document,我的宗旨是我既然看懂了,就写下来分享,这是第一篇. 基本需求: 1.已有 zookeeper ...
- HTML5中 HTML格式化/HTML样式/链表/表格-样式 韩俊强的博客
HTML5学习从简单到复杂,循环渐进! 每日更新关注:http://weibo.com/hanjunqiang 新浪微博! 1.HTML格式化 <!DOCTYPE html> <h ...
- HTML5中 基本用法及属性 韩俊强的博客
从今天开始更新H5相关学习:希望大家能一起学习,多学习一门语言,多一门乐趣! 了解Html5: Html5基本属性: <!DOCTYPE html> <html lang=" ...
随机推荐
- 单变量线性回归(Linear Regression with One Variable)与代价函数
所谓的单变量线性回归问题就是监督学习的一部分. 通过构建数学模型给出一个相对准确的数值,也就是预测模型,通过将数据通过数学模型,衍生至回归问题 通过以下的几个例子,我们来研究单变量线性回归. 1.王阿 ...
- SHIDOU
1. arp i 指定网卡 a 查看arp表,显示主机名称和ip n 查看arp表,并且用ip显示而不是主机名称 2. 119 ~/M2/image-installer- ...
- sed使用案例
简介: sed是一种流编辑器,它是文本处理中非常重要的工具,能够完美的配合正则表达式使用,功能不同凡响.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用 ...
- delphi 单例模式
unit Singleton; (* 单例模式适用于辅助类, 一般伴随于单元的生命周期 *) interface uses SysUtils; type TSingleton = class publ ...
- 一个算法题--Self Crossing
You are given an array x of n positive numbers. You start at point (0,0) and moves x[0] metres to th ...
- XML文件读写编码不是UTF-8的问题
FileWriter和FileReader在写.读文件时,使用系统当前默认的编码方式. 在中文win下encoding基本是GB2312,在英文win下基本是ISO-8859-1.所以要创建一个UTF ...
- Mybatis核心类生命周期和管理
Mybatis核心类生命周期和管理 原文链接:https://blog.csdn.net/qq1134550437/article/details/51960480 1.SqlSessionFacto ...
- 2019年Unity3D游戏开发前景预测及总结
由于现在随着互联网时代的到来,人们上网玩游戏的越来越多,导致游戏开发人才供不应求,如果你想成为一名优秀的开发者,那么掌握Unity3D开发技术是不可跳过的一环.随着移动互联网的发展,移动端游戏日益盛行 ...
- ajax+springboot完整例子
1.index.htm <textarea rows="10" cols="60%" id="cover">ss</tex ...
- [Security] Web Security Essentials
In this course, we'll learn how to exploit and then mitigate several common Web Security Vulnerabili ...