首页 > 其他分享 >学习记录12

学习记录12

时间:2024-01-24 22:11:23浏览次数:22  
标签:src 12 scala 记录 学习 atguigu spark textFile hadoop102

  本次学习学习了共享变量的相关知识内容以及文件系统的读写

本地文件系统的数据读写

scala> val  textFile = sc.textFile("file:///usr/local/spark/mycode/wordcount/word.txt")

因为Spark采用了惰性机制,在执行转换操作的时候,即使输入了错误的语句,spark-shell也不会马上报错

只有进行action操作时才会进行报错,可以通过以下的进行判断

scala>textFile.first()
scala> textFile.saveAsTextFile("file:///usr/local/spark/mycode/wordcount/writeback")

分布式文件系统HDFS的数据读写

读:
scala> val textFile = sc.textFile("hdfs://hadoop102:8020/user/hadoop/test/a.txt")
textFile: org.apache.spark.rdd.RDD[String] = hdfs://hadoop102:8020/user/hadoop/test/a.txt MapPartitionsRDD[3] at textFile at <console>:23

scala> textFile.first()
res1: String = 1213123131231232suashu
scala> val textFile = sc.textFile("/user/hadoop/test/a.txt")
textFile: org.apache.spark.rdd.RDD[String] = /user/hadoop/test/a.txt MapPartitionsRDD[10] at textFile at <console>:23

scala> textFile.first()
res4: String = 1213123131231232suashu    

还有一种直接读的形式

scala> textFile.saveAsTextFile("hdfs://hadoop102:8020/user/hadoop/test/writeback.txt")
scala> textFile.saveAsTextFile("/user/hadoop/test/writeback.txt")

我默认写入的路径:/user/atguigu/writeback.txt

Json文件的读写

加载

把本地文件系统中的people.json文件加载到RDD中:

val  jsonStr = sc.textFile("file:///usr/local/spark/examples/src/main/resources/people.json")
scala> jsonStr.foreach(println)
{"name":"Justin", "age":19}
{"name":"Michael"}
{"name":"Andy", "age":30}
解析

Scala中有一个自带的JSON库——scala.util.parsing.json.JSON,可以实现对JSON数据的解析JSON.parseFull(jsonString:String)函数,以一个JSON字符串作为输入并进行解析,如果解析成功则返回一个Some(map: Map[String, Any]),如果解析失败则返回None

示例:

[atguigu@hadoop102 ~]$ mkdir -p ./testjsonapp/src/main/scala
[atguigu@hadoop102 ~]$ cd testjsonapp/
[atguigu@hadoop102 testjsonapp]$ cd src/
[atguigu@hadoop102 src]$ cd main/
[atguigu@hadoop102 main]$ cd scala/
[atguigu@hadoop102 scala]$ vim SimpleApp.scala

编写SimpleApp程序

import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
import scala.util.parsing.json.JSON
object JSONRead {
    def main(args: Array[String]) {
        val inputFile = "file:///usr/local/spark/examples/src/main/resources/people.json"
        val conf = new SparkConf().setAppName("JSONRead")
        val sc = new SparkContext(conf)
        val jsonStrs = sc.textFile(inputFile)
        val result = jsonStrs.map(s => JSON.parseFull(s))
        result.foreach( {r => r match {
                        case Some(map: Map[String, Any]) => println(map)
                        case None => println("Parsing failed")
                        case other => println("Unknown data structure: " + other)
                }
        }
        )
    }
}
[atguigu@hadoop102 scala]$ cd ..
[atguigu@hadoop102 main]$ cd ..
[atguigu@hadoop102 src]$ cd ..
[atguigu@hadoop102 testjsonapp]$ vim simple.sbt

编写simple.sbt

name := "Simple Project"
version := "1.0"
scalaVersion := "2.12.15"
libraryDependencies += "org.apache.spark" %% "spark-core" % "3.2.0"
libraryDependencies += "org.scala-lang.modules" %% "scala-parser-combinators" % "1.0.4"

目录结构、打包

[atguigu@hadoop102 testjsonapp]$ find .
.
./src
./src/main
./src/main/scala
./src/main/scala/SimpleApp.scala
./simple.sbt
[atguigu@hadoop102 testjsonapp]$ /usr/local/sbt/sbt package

Spark运行

[atguigu@hadoop102 testjsonapp]$ /usr/local/spark/bin/spark-submit --class "JSONRead" /home/atguigu/testjsonapp/target/scala-2.12/simple-project_2.12-1.0.jar

结果:

读写Hbase数据

Hbase是一个稀疏、多维度、排序的映射表,这张表的索引是行键,列族、列限定符和时间戳

Hbase需要根据行键,列族、列限定符和时间戳来确定一个单元格,可以视为一个四维坐标,Hbase基于HDFS,由于HDFS不能进行修改,所以使用时间戳生成最新版本来进行修改单元格的数据

 

[atguigu@hadoop102 bin]$ start-hbase.sh
启动shell
[atguigu@hadoop102 bin]$ hbase shell
停止Hbase
stop-hbase.sh

 

标签:src,12,scala,记录,学习,atguigu,spark,textFile,hadoop102
From: https://www.cnblogs.com/JIANGzihao0222/p/17985974

相关文章

  • Luogu P1249 最大乘积
    最大乘积题目描述一个正整数一般可以分为几个互不相同的自然数的和,如\(3=1+2\),\(4=1+3\),\(5=1+4=2+3\),\(6=1+5=2+4\)。现在你的任务是将指定的正整数\(n\)分解成若干个互不相同的自然数的和,且使这些自然数的乘积最大。输入格式只一个正整数\(n\),(\(3\leqn\leq10000\))。......
  • Kubernetes 学习整理(四)
    ScaletheappScalingwillincreasethenumberofPodstothenewdesiredstate.Pre-config:exposetheapppubliclykubectlgetservicesNAMETYPECLUSTER-IPEXTERNAL-IPPORT(S)AGEkubernetesClusterIP10.43.0.1<none>......
  • OpenMP学习 第九章 通用核心回顾
    第九章通用核心回顾创建线程组:shared(list)private(list)firstprivate(list)default(none)reduction(operator:list)#pragmaompparallel[clause[,clause]...]{//bodyofparallel}共享工作循环构造:private(list)firstprivate(list)nowaitreduct......
  • CV 基础知识学习笔记
    简略记录一下一些基本的CV的知识参考:https://www.bilibili.com/video/BV1q7411T7Y6/输出层计算公式:\(out_{size}=(in_{size}-F_{size}+2P)/S+1\)\(in_{size}\)为输入长度\(F_{size}\)为权重矩阵长度,减掉意义为去掉第一个矩阵长度。\(P\)为padding,即填充长......
  • KY124 二叉搜索树C++
    先把BST建立起,然后递归遍历判断树就好了。#include<iostream>#include<string>usingnamespacestd;structnode{chardata;structnode*left;structnode*right;};typedefstructnodetree;tree*build(strings){inti=0;tree*root=NULL......
  • 【文化课学习笔记】【物理】平衡力学
    【物理】平衡力学重力大小:\(G=m\mathrm{g}\);方向:竖直向下;\(\mathrm{g}\):不是定值,与高度和纬度有关;高度越高,\(\mathrm{g}\)越小;纬度越高,\(\mathrm{g}\)越大。重心:测量方法:悬挂法。规则图形的重心在几何中心。误区:重心不一定在物体上。注意事项:一个装满水的气球下方开......
  • 数论——Pollard-Rho 学习笔记
    数论——Pollard-Rho学习笔记非平凡因数:\(n\)除了\(1\)和\(n\)以外的因数。Pollard-Rho算法是一种用于快速分解非平凡因数的算法。Pollard-Rho能在期望复杂度\(\mathcalO(n^{1/4})\)的时间内找到\(n\)的最小的非平凡因数。而根据Pollard-Rho,我们可以用来加速质......
  • ubuntu学习
    ubuntu是什么Linux有非常多的发行版本,从性质上划分,大体分为由商业公司维护的商业版本与由开源社区维护的免费发行版本。*(centos)商业版本以Redhat为代表,开源社区版本则以debian为代表。这些版本各有不同的特点,在不同的应用领域发挥着不同的作用,不能一概而论。下面就这些不同......
  • 0124今日收获
    又是元气满满的一天今日代码1今日代码2今日代码3今日代码4今日代码5今日代码6今日代码7又是元气满满的一天......
  • KY212 二叉树遍历C++
    思路是先构造出树,然后在后序遍历整个树。#include<iostream>#include<string>usingnamespacestd;structTnode{chardata;structTnode*left;structTnode*right;};typedefstructTnodeTree;Tree*build(stringpre,inth1,intt1,stringin,inth2......