spark

spark:读取不了本地文件,Spark默认读取(当前部署环境)HDFS文件系统

北慕城南 提交于 2020-02-03 07:49:41
package com.tzb.bigdata.spark import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} object WordCount{ def main(args: Array[String]): Unit = { //使用开发工具完成Spark WordCount的开发 //local模式 //创建SparkConf对象 //设定Spark计算框架的运行(部署)环境 //app id val config : SparkConf = new SparkConf().setMaster("local[*]").setAppName("WordCount") //创建Spark上下文对象 val sc = new SparkContext(config) // println(sc) //读取文件,将文件内容一行一行读取出来 // sc.textFile("in/word.txt") //只读一个文件 // val lines:RDD[String] = sc.textFile("input") //读文件夹下所有文件 此种方式默认的(当前部署环境)是读取的hdfs的目录 val lines:RDD[String] = sc.textFile("file://

Spark SQL/DataFrame/DataSet操作(一)-----读数据

纵饮孤独 提交于 2020-02-03 07:12:13
一、读取数据源 (1)读取json ,使用spark.read。注意:路径默认是从HDFS,如果要读取本机文件,需要加前缀file://,如下 scala> val people = spark.read.format("json").load("file:///opt/software/data/people.json") people: org.apache.spark.sql.DataFrame = [age: bigint, name: string] scala> people.show +----+-------+ | age| name| +----+-------+ |null|Michael| | 30| Andy| | 19| Justin| +----+-------+ spark.read.format(“json”).load(“file:///opt/software/data/people.json”) 等价于spark.read.json(“file:///opt/software/data/people.json”) 如要要读取其它格式文件,只需修改format(“json”)即可,如format(“parquet”) (2)读取Hive表,使用spark.sql。其中hive数据库名default(默认数据库名可省略),表为people

spark:spark-submit 提交任务及参数说明

为君一笑 提交于 2020-02-03 02:42:00
spark-submit 可以提交任务到 spark 集群执行,也可以提交到 hadoop 的 yarn 集群执行。 1. 例子 一个最简单的例子,部署 spark standalone 模式后,提交到本地执行。 ./bin/spark-submit \ --master spark://localhost:7077 \ examples/src/main/python/pi.py 如果部署 hadoop,并且启动 yarn 后,spark 提交到 yarn 执行的例子如下。 注意,spark 必须编译成支持 yarn 模式,编译 spark 的命令为: build/mvn -Pyarn -Phadoop-2.x -Dhadoop.version=2.x.x -DskipTests clean package 其中, 2.x 为 hadoop 的版本号。编译完成后,可执行下面的命令,提交任务到 hadoop yarn 集群执行。 ./bin/spark-submit --class org.apache.spark.examples.SparkPi \ --master yarn \ --deploy-mode cluster \ --driver-memory 1g \ --executor-memory 1g \ --executor-cores 1 \ --queue

spark源码之Shuffle Write

梦想与她 提交于 2020-02-03 00:19:47
一、shuffle定义    shuffle,即为洗牌的意思,在大数据计算中,无论是mapreduce框架还是spark框架,都需要shuffle,那是因为在计算的过程中,具有某种特征的数据最终需要汇聚在一个节点上进行计算,这些数据是分部在集群中不同的节点上由各自节点进行计算。就比如以workcount为例:   其中数据是分别保存在节点Node1,Node2,Node3上,经过处理之后,数据最终会汇聚到结点Node a和Node b上进行处理。   而这个数据重新打乱然后重新汇聚到不同节点的过程就是shuffle , 但是实际情况下,shuffle的要比这个复杂的多。 数据量会很大,比如单位为TB或PB的数据分散在几百甚至数千、数万台机器上。 为了将这些数据汇聚到正确的节点,需要将这些数据放到正确的partition,因为数据大小已经大于节点的内存,因此这个过程可能会发生多次的硬盘的续写。 为了节省带宽,这个数据可能需要压缩,如何在压缩率与压缩解压时间中间做一个较好的平衡,是需要我们考虑的。 数据需要通过网络传输,所以数据的序列化与反序列化也变得相对复杂。   一般情况下,每个task处理的数据是可以完全载入内存当中的(如果说不能的话,可以减小partition的大小),所以task可以做到内存中计算,除非非常复杂的计算逻辑,否则,如果为了容错而持久化中间数据,是没有太大的收益的

spark学习进度2

回眸只為那壹抹淺笑 提交于 2020-02-03 00:07:43
今天先安装好了spark,利用spark里自带的Scala运行了几个简单的Scala程序,看教学视频了解了点儿简单的语法,截图如下: 接着安装scala ide for eclipse,安装在了usr/local目录下,本以为他会正常的替代原来的eclipse,因为我之前有这样直接解压到里面直接就替换了,这次解压之后不仅之前的还在,而且两个eclipse都没法正常使用了 暂停scala ide for eclipse的安装,简单了解一下spark的工作机制与hadoop有什么不同,然后下面从四个方面说一下两者的关系与区别: 1、目的:首先需要明确一点,hadoophe spark 这二者都是大数据框架,即便如此二者各自存在的目的是不同的。Hadoop是一个分布式的数据基础设施,它是将庞大的数据集分派到由若干台计算机组成的集群中的多个节点进行存储。Spark是一个专门用来对那些分布式存储的大数据进行处理的工具,spark本身并不会进行分布式数据的存储。 2、两者的部署:Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。 所以使用 Hadoop则可以抛开spark,而直接使用Hadoop自身的mapreduce完成数据的处理。Spark是不提供文件管理系统的,但也不是只能依附在Hadoop上

2020寒假学习(4)

落爺英雄遲暮 提交于 2020-02-02 23:22:15
Intellij IDEA 使用 Maven 搭建 spark 开发环境(1) (接 https://www.cnblogs.com/janeszj/p/12230833.html ) 下载 Spark (官网下载只能下载比较新的版本,老版本资源没有找到,我下载的是) 复制到虚拟机中 把 spark-2.4.4-bin-hadoop2.7 压缩包 拷贝到 /usr/local/spark中 创建 spark 文件夹 mkdir -p /usr/local/spark 移至压缩包所在目录拷贝其到指定位置 cp -r spark-2.4.4-bin-hadoop2.7.tgz /usr/local/spark 移至到 spark 目录下解压 tar -zxvf spark-2.4.4-bin-hadoop2.7.tgz 修改配置文件 配置文件位于 /usr/local/spark/spark-2.4.4-bin-hadoop2.7/conf 目录下。 将 spark-env.sh.template 重命名为 spark-env.sh 。 mv spark-env.sh.template spark-env.sh 添加如下内容: export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_241 export SCALA_HOME=/usr/local/share

2020年寒假假期总结0202

允我心安 提交于 2020-02-02 13:32:07
  Java连接hive简单操作   首先在使用java连接前我们需要在虚拟机上开启hiveserver2(hiveserver2需要安装),hiveserve2的作用是实现hive可以进行并发操作,否则没有办法实现java对hive的操作。   使用命令:hiveserver2即可打开hiveserver2服务,需要注意的是,开启服务后这个命令窗口就会被占用,即出现一下情况:   此时已经代表服务已经开启,我们就不需要动这个终端窗口了,可以再开一个,因为下面这个窗口会显示你的hive操作是否成功,成功此时ok,错误会显示错误原因。即下图   注意点:如果在启动hive出现:cannot access /usr/local/spark/lib/spark-assembly-*.jar: No such file or directory,是因为这个jar包在新版本的spark中的位置已经改变!我们要做的只是将hive中的启动文件中的sparkAssemblyPath这一行更改为你安装的spark的jar包路径即可。我们找到hive文件夹下的bin目录,打开hive文件,找到这句话 # add Spark assembly jar to the classpath if [[ -n "$SPARK_HOME" ]] then sparkAssemblyPath=`ls ${SPARK

【大数据面试题】(五)Spark 相关面试题总结

痴心易碎 提交于 2020-02-01 23:28:33
文章目录 一、spark中的RDD是什么,有哪些特性? 二、概述一下spark中的常用算子区别(map,mapPartitions,foreach,foreachPatition)? 三、谈谈spark中的宽窄依赖? 四、spark中如何划分stage? 五、RDD缓存? 六、driver 的功能是什么? 七、Spark master 使用zookeeper 进行HA 的,有哪些元数据保存在Zookeeper? 一、spark中的RDD是什么,有哪些特性? 答:RDD(Resilient Distributed Dataset)叫做分布式数据集,是spark中最基本的数据抽象,它代表一个不可变,可分区,里面的元素可以并行计算的集合 Dataset:就是一个集合,用于存放数据的 Destributed:分布式,可以并行在集群计算 Resilient:表示弹性的,弹性表示 RDD中的数据可以存储在内存或者磁盘中; RDD中的分区是可以改变的; 五大特性: A list of partitions:一个分区列表,RDD中的数据都存储在一个分区列表中 A function for computing each split:作用在每一个分区中的函数 A list of dependencies on other RDDs:一个RDD依赖于其他多个RDD,这个点很重要

大三上寒假15天--第1天

£可爱£侵袭症+ 提交于 2020-02-01 23:06:33
学习于林子雨《大数据技术原理与应用》教材配套大数据软件安装和编程实践指南 一. 安装spark 第一步,spark下载(http://spark.apache.org/downloads.html) 第二步,spark压缩包解压 sudo tar -zxf ~/下载/spark-1.6.2-bin-without-hadoop.tgz -C /usr/local/ 第三步,解压后文件夹改名为spark cd /usr/local sudo mv ./spark-1.6.2-bin-without-hadoop/ ./spark 第四步,赋予权限 sudo chown -R hadoop:hadoop ./spark 第五步,安装后,还需要修改Spark的配置文件spark-env.sh cd /usr/local/spark cp ./conf/spark-env.sh.template ./conf/spark-env.sh vim ./conf/spark-env.sh 按i进入编辑模式,第一行插入export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath),如图: 第六步,测试 cd /usr/local/spark bin/run-example SparkPi 结果应为,如图: ,还有很多信息

spark学习二

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-01 21:02:16
SparkContext是编写Spark程序用到的第一个类,是Spark的主要入口点,用于连接 Spark集群、创建RDD、累加器和广播变量,是Spark程序的根本。 编写不同类型的Spark程序,使用的SparkContext是不同的 Scala 使用SparkContext Java 使用JavaSparkContext 开发一个简单的Spark程序: 第一步:创建SparkConf对象,设置Spark应用的配置信息 第二步:创建Spark Context对象 第三步:针对输入源创建一个初始的RDD(数据集),输入源数据分配到不同的区,形成初始的分布式数据集 SparkContext中,用于根据文件类型的输入源常见RDD的方法叫textFile()方法 今天安装Scala,并学习了Scala语言一些基本的语法, scala 方法声明格式: def functionName ([参数列表]) : [ return type ] 例: object add { def addInt ( a : Int , b : Int ) : Int = { var sum : Int = 0 sum = a + b return sum } } Scala的输入语句:val name = StdIn.readLine() 完成了实验二 import scala.io.StdIn object