spark 操作 spark-shell_StayHungry2016的博客-程序员资料

技术标签: spark  技术知识  hdfs  

读取HDFS 上文件命令,

spark.read.textFile("/user/ssy.097").count


spark.read.wholeTextFiles
SparkContext.wholeTextFiles 能够读取指定目录下的许多小文本文件


spark.read.textFile("/user/ssy.097").map(_.split("\u001,-1")).show           //相当于把每一行的内容看做一个map


spark.read.parquet("/user/ssy.097").createOrReplaceTempView("")      // createOrReplaceTempView注册为临时表   注册完临时表就可以写sql语句去查询你需要的信息了


val df = sqlContext.read.json("file:///usr/local/spark/examples/src/main/resources/people.json")  读取 JSON 格式的数据

DataFrames 处理结构化数据
df.select("name").show()    // 只显示 "name" 列
df.select(df("name"), df("age") + 1).show() // 将 "age" 加 1
df.filter(df("age") > 21).show()  //条件语句
df.groupBy("age").count().show()   // groupBy 操作

 SQL 语句来进行操作
df.registerTempTable("people")     // 将 DataFrame 注册为临时表 people
val result = sqlContext.sql("SELECT name, age FROM people WHERE age >= 13 AND age <= 19")  // 执行 SQL 查询


val linesWithSpark = textFile.filter(line => line.contains("Spark"))   // 筛选出包含 Spark 的行    contains包含


所谓的控制操作就是持久化
你能通过persist()或者cache()方法持久化一个rdd。首先,在action中计算得到rdd;然后,将其保存在每个节点的内存中。Spark的缓存是一个容错的技术-如果RDD的任何一个分区丢失,它 可以通过原有的转换(transformations)操作自动的重复计算并且创建出这个分区。

cache();

persist(); //保存RDD的依赖关系

checkpoint() //切断关系

调用 cache(),就可以将数据集进行缓存:




flatMap                 类似于map,但是输入数据项可以被映射到0个或多个输出数据集合中,所以函数func的返回值是一个数据项集合而不是一个单一的

                            数据项

mapPartitions      类似于map,但是该操作是在每个分区上分别执行,所以当操作一个类型为T的RDD时func的格式必须是

                            Iterator<T> => Iterator<U>。   即 mapPartitions需要获取到每个分区                  的迭代器,在函数中通过这个分区的迭代器

                            对整个分区的元素进行操作。

reduceByKey      使用给定的func,将(K,V)对格式的数据集中key相同的值进行聚集,其中func的格式必须为(V,V) => V。可选参数

                            numTasks可以指定reduce任务的数目。

reduce                 使用函数func聚集数据集中的元素,这个函数func输入为两个元素,返回为一个元素。这个函数应该符合结合律和交换了,
                            这样才能保证数据集中各个元素计算的正确性。

collect                  在驱动程序中,以数组的形式返回数据集的所有元素。通常用于filter或其它产生了大量小数据集的情况

take                     返回数据集中的前n个元素。

saveAsTextFile      将数据集中的元素以文本文件(或文本文件集合)的形式保存到指定的本地文件系统、HDFS或其它Hadoop支持的

                               文件系统中。Spark将在每个元素上调用toString方法,将数据元素转换为文本文件中的一行记录。

saveAsObjectFile   将数据集中的元素以简单的Java序列化的格式写入指定的路径。这些保存该数据的文件,

                               可以使用SparkContext.objectFile()进行加载。

        可以将RDD视作数据库中的一张表。其中可以保存任何类型的数据
        RDD是一种只读的、分区的记录集合。Spark借助RDD实现对类存的管理。

        直接从集合转化 sc.parallelize(List(1,2,3,4,5,6,7,8,9,10))
     从HDFS文件转化 sc.textFile("hdfs://")
  从本地文件转化 sc.textFile("file:/")


        如果想手动移除一个RDD,而不是等待该RDD被Spark自动移除,可以使用RDD.unpersist()方法。




版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/StayHungry2016/article/details/72818116

智能推荐

最新win10安装apache-superset血泪踩坑史_我有八只脚的博客-程序员资料

整了将近一天,中文版的安装步骤没有完全靠谱的,也不是最新步骤,踩了无数无数坑…最后摸到了apache-superset官网https://superset.incubator.apache.org/installation.html总算搞定了。。。官网虽然也不是很靠谱,但比起旧文档们好多了,而且因为翻了N篇中文安装步骤,大概能意识到哪些地方买了雷。以下是步骤操作:环境:win10(MAC、Docker也能在文档中找到安装方法)支持python≈3.6,3.7也能较好兼容;需添加至环境变量;如

Ubuntu14.04 VSCode工程在root下无运行,在非root无法修改配置文件_Answer-3的博客-程序员资料_vscode remote 非root用户无权修改文件

转自:https://blog.csdn.net/wenyun_kang/article/details/69389784vscode的配置文件被加上了root权限 把配置文件的root权限去掉就好了cd ~/.config sudo rm -rf ./Code/ 然后输入密码就好了猜测原因:vscode在打开的时候需要改动一些配置文件,但是启动的时候发现文件夹加了root权限...

11292 - Dragon of Loowater(贪心)_AC_Arthur的博客-程序员资料

我的《训练指南》第一题,开始刷训练指南了,接下来会踏踏实实的独立刷题,远离题解。例题也尽量自己做。  刷题的内容大致就是lrj的两本书和另外的训练题。 其他的题库待我能力达到了再说吧。该题很简单,排序、贪心即可。 很容易证明选厉害的骑士不如选差一点的好。细节参见代码:#includeusing namespace std;const int maxn = 20000 + 5;in

分组对称加密模式:ECB/CBC/CFB/OFB_wdt3385的博客-程序员资料

一般的加密通常都是块加密,如果要加密超过块大小的数据,就需要涉及填充和链加密模式,文中提到的ECB和CBC等就是指链加密模式。在C#组件中实现的很多算法和Java都不太兼容,至少我发现RSA和AES/ECB是如此。研究了AES/ECB时发现了这篇文档,图还画的不错,先记下。注意,还缺一种CTR的模式。 对称加密和分组加密中的四种模式(ECB、CBC、CFB、OFB)一. AES

SQL server2014导入导出Excel详解_hemingyang97的博客-程序员资料

1.找到需要导出的数据库,进行如下操作:2.选择数据源、Excel文件路径、Excel版本注意:第一次使用时选择Excel进行下一步时会报错需要下载安装:Microsoft Office Access Database Engine 2007http://download.microsoft.com/download/7/0/3/703ffbcb-dc0c-4e19-b0d...

Kali安装Nessus最详细版本_宁子君的博客-程序员资料

1.软件包的下载Kali:官网自取Nessus:https://www.tenable.com/downloads/nessus(选择amd64)2.Kali测试网络连通性(修改ip以及dns)需进入root用户,su 切换root,分别编辑IP以及DNS3.安装Nessus,切换到包所在的路径,进行安装,一定要记得重启服务 service nessusd start4.在浏览器访问https://192.168.1.198:8834 (配置的IP地址)来进行初.

随便推点

“人脸识别技术全面总结:从传统方法到深度学习”读后感_hzhj的博客-程序员资料_人脸识别心得体会

本文是对人脸识别技术全面总结:从传统方法到深度学习文章中总结的内容进行梳理。 技术难点 文章中提到,无约束环境中,人脸识别需要应对头部姿势、年龄、遮挡、光照条件和人脸表情等难点问题;项目的实际应用中都会遇到横向和纵向的难点,横向是周围因素对物体的影响:光照、遮挡;纵向是物体自身的影响:姿势、表情和年龄(人脸特有的属性); 提高准确度的方法:训练数据、CNN 架构和损失函数 神经网络是实际应用中的工具,总的目的是希望NN可以提取出能够泛化到训练集中未曾出现过的主体上的特征。数据集

Qt解决中文显示乱码问题_林夕07的博客-程序员资料_qt乱码

我相信所有用过Qt都遇到过中文乱码问题。下面列出了我经常用的几种解决方法。方法二该方法有点复杂,懒人请跳过。Step1:使用Notepad++打开对于的文件将编码格式转成UTF-8-BOM编码。Step2:使用QStringLiteral(“中文字符”)方法三我最喜欢的方法没有之一。最爱。太方便了。万物皆可u8效果图...

HBase使用压缩存储(snappy)_kfcman的博客-程序员资料

在将mysql数据导入到hbase数据的过程中,发现hbase的数据容量增加很快, 原本在mysql存储30G容量的数据导入到hbase一直增加到快150G(还未完全导入,手动结束), 而采用默认3个备份储存的话,基本上真个集群有450G的容量。 查看了一些资料,发现hbase的储存确实耗空间,一般hbase采用压缩算法来解决,其中snappy 的算法收到Goog...

微信公众号开发(六)-- 关注公众号自动回复两条消息_谁还不是块小饼干的博客-程序员资料

昨天晚上临下班,客户提了个新需求,关注公众号的时候希望呢能自动回复两条信息。我,一个野生的菜鸡程序媛当时眼前就一黑,昨天还是圣诞节呢嘿。咳。查了下,自动回复两条消息,其实除了欢迎信息再调用一次客服接口。调用客服接口,回复文字信息 $content = 'Hello Word'; $data = '{ &quot;touser&quot; : &quot;'.$openid.'&quot;, &quot;msgtype...

VS 中Unicode(UTF-8 带签名) -代码页 65001_sdt0263的博客-程序员资料

<br />VS 中发布网站编码问题: 发布后的编码格式是GB2312,ANSI,浏览页面出现乱码!<br />1. 打开一个页面,然后 文件-->高级保存选项-->如果是UTF-8(不带签名的发布后默认变成ANSI格式),将其改成UTF-8(带签名)<br />2.工具--->选项--->文本编辑器--->常规--->勾上(自动检测不带签名的UTF-8编码)

latex插入参考文献技巧_辽宁大学的博客-程序员资料_参考文献引用 方框怎么弄 latex

LaTeX插入参考文献,可以使用BibTex,也可以不使用BibTex。方法一:不使用BibTeX先在文章文章末尾写好需要插入的参考文献,逐一写出,例如:\begin{thebibliography}{99} \bibitem{ref1}Zheng L, Wang S, Tian L, et al., Query-adaptive late fusion for image...