Scala-初學

前提,已經安裝好Scala
在Linux終端
準備資料:
a.txt 內容

HIVE 底層 是 hdfs 和 mapreduce 實現存儲 和 計算的 。
HIVE 也 可以 使用 hadoop 配置 的 壓縮 方法 對 中間 結果 或 最終 數據 進行 壓縮

1
import scala.io.Source
scala> val lines = Source.fromFile(“/usr/local/src/test_data/a.txt”).getLines()
lines: Iterator[String] = non-empty iterator
Iterator : 迭代器,不是一個集合
it…next() : 返回迭代器中的下一個元素,同時更新迭代器的狀態
it.hasNext(): 用于檢查迭代器中是否還有元素
scala> val lines = Source.fromFile(“/usr/local/src/test/a.txt”).getLines().toList
toList:將迭代器中的元素歸入到列表中進行返回

Range

定義: 序列, 包括起點和終點,按照給定步長的所有值,是一個特殊的Array

  1. [0,5)
scala> val a= Range(0,5)
a: scala.collection.immutable.Range = Range(0, 1, 2, 3, 4)

等價于

scala> val a = 0 until 5
a: scala.collection.immutable.Range = Range(0, 1, 2, 3, 4)

2.[0,5]

scala> val a = 0 until 5
a: scala.collection.immutable.Range = Range(0, 1, 2, 3, 4)

等價于

scala> val a = 0.to(5)
a: scala.collection.immutable.Range.Inclusive = Range(0, 1, 2, 3, 4, 5)

3.Range 和 list 轉換

scala> val list1 = (1 to 20).toList
list1: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)

map

對 a 的每個元素進行遍歷然后 * 2

scala> val a = 1 to 5
a: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5)
scala> a.map(x=>x*2)
res0: scala.collection.immutable.IndexedSeq[Int] = Vector(2, 4, 6, 8, 10)

Vector 是一個容器,保存其他的數據對象,也可以稱為集合,是Scala標準包的,不用導包
1.創建Vector 對象

scala> var v1 = Vector(1,2,3)
v1: scala.collection.immutable.Vector[Int] = Vector(1, 2, 3)

2.索引Vector中的元素,索引是從0開始的

scala> print(v1(0))
1

3 遍歷Vector

scala> for(i<-v1) print(i+"/")
1/2/3/

Scala中(下劃線) _ 的用法

1,獲取集合中的每一個元素

scala> a.map(_*2)
res3: scala.collection.immutable.IndexedSeq[Int] = Vector(2, 4, 6, 8, 10)

2 獲取元組(Tuple)中的元素

scala> val s = ("hello","scala")
s: (String, String) = (hello,scala)scala> s._1
res4: String = helloscala> s._2
res5: String = scala

3 導入所有包

import scala.io._

4 初始化變量 val 聲明的變量不能被修改

scala> var name:String=_
name: String = nullscala> var age:Int=_
age: Int = 0

函數 split

scala> var s = "all back money"
s: String = all back moneyscala> s.split(" ")
res6: Array[String] = Array(all, back, money)

打平函數:
flatten

scala> val s1 = List(Range(1,5),Range(0,5),Range(0,5))
s1: List[scala.collection.immutable.Range] = List(Range(1, 2, 3, 4), Range(0, 1, 2, 3, 4), Range(0, 1, 2, 3, 4))scala> val s2 = s1.flatten
s2: List[Int] = List(1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4)

1.針對每一個元素 * 2

方式一:
scala> s2.map(x=>x*2)
res9: List[Int] = List(2, 4, 6, 8, 0, 2, 4, 6, 8, 0, 2, 4, 6, 8)
方式二:
scala> s2.map(_*2)
res9: List[Int] = List(2, 4, 6, 8, 0, 2, 4, 6, 8, 0, 2, 4, 6, 8)

2 針對s1每個元素直接*2

方式一:
scala> s1.map(x=>x.map(x=>x*2))
res10: List[scala.collection.immutable.IndexedSeq[Int]] = List(Vector(2, 4, 6, 8), Vector(0, 2, 4, 6, 8), Vector(0, 2, 4, 6, 8))
方式二:
scala> s1.map(_.map(_*2))
res11: List[scala.collection.immutable.IndexedSeq[Int]] = List(Vector(2, 4, 6, 8), Vector(0, 2, 4, 6, 8), Vector(0, 2, 4, 6, 8))

flatMap

scala> s1.flatMap(_.map(_*2))
res12: List[Int] = List(2, 4, 6, 8, 0, 2, 4, 6, 8, 0, 2, 4, 6, 8)等價于scala> s1.map(_.map(_*2)).flatten
res13: List[Int] = List(2, 4, 6, 8, 0, 2, 4, 6, 8, 0, 2, 4, 6, 8)

練習:對lines進行 wordCount

scala> val lines = Source.fromFile("/usr/local/src/test_data/a.txt").getLines().toList
lines: List[String] = List("HIVE 底層 是 hdfs 和 mapreduce 實現存儲 和 計算的 。 ", HIVE 也 可以 使用 hadoop 配置 的 壓縮 方法 對 中間 結果 或 最終 數據 進行 壓縮)scala> lines.map(_.split(" "))
res7: List[Array[String]] = List(Array(HIVE, 底層, 是, hdfs, 和, mapreduce, 實現存儲, 和, 計算的, 。), Array(HIVE, 也, 可以, 使用, hadoop, 配置, 的, 壓縮, 方法, 對, 中間, 結果, 或, 最終, 數據, 進行, 壓縮))scala> lines.map(_.split(" ")).flatten
res14: List[String] = List(HIVE, 底層, 是, hdfs, 和, mapreduce, 實現存儲, 和, 計算的, 。, HIVE, 也, 可以, 使用, hadoop, 配置, 的, 壓縮, 方法, 對, 中間, 結果, 或, 最終, 數據, 進行, 壓縮)scala> lines.flatMap(_.split(" "))
res15: List[String] = List(HIVE, 底層, 是, hdfs, 和, mapreduce, 實現存儲, 和, 計算的, 。, HIVE, 也, 可以, 使用, hadoop, 配置, 的, 壓縮, 方法, 對, 中間, 結果, 或, 最終, 數據, 進行, 壓縮)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/215836.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/215836.shtml
英文地址,請注明出處:http://en.pswp.cn/news/215836.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++ 指針常量和常量指針的區別

指針常量 指針常量&#xff1a;顧名思義它就是一個常量&#xff0c;但是是指針修飾的。 格式為&#xff1a; int * const p //指針常量在這個例子下定義以下代碼&#xff1a; int a&#xff0c;b&#xff1b; int * const p&a //指針常量 //那么分為一下兩種操作 *p9;//操…

普通SSL證書和EV SSL證書有什么區別?

SSL證書是一種用于加密網站和保護用戶數據傳輸的安全協議。在SSL證書的類型中&#xff0c;普通SSL證書和EV SSL證書是兩種常見的選擇。本文將介紹普通SSL證書和EV SSL證書的區別&#xff0c;以及它們在網站安全性和可信度方面的差異。 1、安全性驗證程度 普通SSL證書和EV SSL證…

linux(5):linux基礎命令第五彈

在linux基礎命令第四彈中http://t.csdnimg.cn/tvuNl我們了解了echo、tail命令、管道符和vim文本編輯器的相關內容。這一篇我們會了解關于命令選項的說明 我們在之前的學習中&#xff0c;發現命令中的選項是非常多的&#xff0c;比如-l -c -m -r -w 等等&#xff0c;命令有很多&…

C++學習筆記之五(String類)

C 前言getlinelength, sizec_strappend, inserterasefindsubstrisspace, isdigit 前言 C是兼容C語言的&#xff0c;所以C的字符串自然繼承C語言的一切字符串&#xff0c;但它也衍生出屬于自己的字符串類&#xff0c;即String類。String更像是一個容器&#xff0c;但它與容器還…

C++入門【6-C++ 修飾符類型】

C 修飾符類型 C 允許在 char、int 和 double 數據類型前放置修飾符。 修飾符是用于改變變量類型的行為的關鍵字&#xff0c;它更能滿足各種情境的需求。 下面列出了數據類型修飾符&#xff1a; signed&#xff1a;表示變量可以存儲負數。對于整型變量來說&#xff0c;signe…

12月11日作業

完善對話框&#xff0c;點擊登錄對話框&#xff0c;如果賬號和密碼匹配&#xff0c;則彈出信息對話框&#xff0c;給出提示登錄成功&#xff0c;提供一個Ok按鈕&#xff0c;用戶點擊Ok后&#xff0c;關閉登錄界面&#xff0c;跳轉到其他界面 如果賬號和密碼不匹配&#xff0c;彈…

被迫搬家,寬帶遷移怎么辦?

廣州一棟違建爛尾樓&#xff0c;13年里從未停止出租&#xff0c;年年住滿人。這棟樓沒有貼外墻&#xff0c;裸露的水泥表面都被雨水腐蝕&#xff0c;很多陽臺沒有建好&#xff0c;只是簡單加裝了護欄&#xff0c;存在巨大安全隱患。 為什么爛尾樓年年滿人呢&#xff1f; 因為它…

算法:快速冪ksm

為什么使用快速冪&#xff1a; 假設題目要求求a的b次方。 c/c里并沒有^運算符&#xff0c;所以我們第一時間可能想到使用for循環&#xff0c;將“a * a”語句循環b次。但是這樣時間復雜度為O(n),所以當b過大的時候&#xff0c;我們的程序將會非常慢&#xff0c;所以我們需要使用…

基于ssm樂購游戲商城系統論文

摘 要 隨著社會的發展&#xff0c;游戲品種越來越多&#xff0c;計算機的優勢和普及使得樂購游戲商城系統的開發成為必需。樂購游戲商城系統主要是借助計算機&#xff0c;通過對信息進行管理。減少管理員的工作&#xff0c;同時也方便廣大用戶對個人所需信息的及時查詢以及管理…

基于深度學習的yolov5入侵檢測系統

歡迎大家點贊、收藏、關注、評論啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代碼。 文章目錄 一項目簡介IntroductionYOLOv5 Overview入侵檢測系統架構1. 數據采集2. YOLOv5模型訓練3. 實時監測4. 告警與反饋 性能評估與優化 二、功能三、系統四. 總結 一項目簡…

Huawei Auth-HTTP Server 1.0 存在任意文件讀取漏洞 附POC軟件

@[toc] Huawei Auth-HTTP Server 1.0 存在任意文件讀取漏洞 附POC 免責聲明:請勿利用文章內的相關技術從事非法測試,由于傳播、利用此文所提供的信息或者工具而造成的任何直接或者間接的后果及損失,均由使用者本人負責,所產生的一切不良后果與文章作者無關。該文章僅供學…

【精華帖】發布你造的輪子 -- 創建Nuget包(分布操作)

目錄 1、您的項目 2、創建 .nuspec 文件 3、一張圖片勝過一千個拉取請求 4、包括自述文件 MD 文件 5、構建軟件包 6、將包部署到 Nuget.Org

視頻中自監督學習:「我的世界」下指令理解與跟隨

本文介紹了北京大學人工智能研究院梁一韜助理教授所帶領的 CraftJarvis 團隊在「我的世界」環境下探索通用智能體設計的新進展&#xff0c;題為“GROOT: Learning to Follow Instructions by Watching Gameplay Videos”。 ? GROOT 該研究的核心目標是探索能否擺脫文本數據的標…

【NR技術】NR NG-RAN整體架構 -網絡接口以及無線協議框架(四)

1 引言 本博文介紹NR NG-RAN的網絡節點間的接口以及無線協議框架。網絡接口介紹包括RAN和NGC之間的NG接口&#xff1b;無線協議框架包括用戶面和控制面協議。 2 NG接口 2.1 NG用戶面接口 NG-U (user plane interface)是NG-RAN節點與UPF之間的接口。NG接口的用戶平面協議棧如圖…

AutoGen實戰應用(一):代碼生成、執行和調試

AutoGen 是一個支持使用多個代理來開發大型語言模型(LLM) 應用程序的框架&#xff0c;這些代理采樣相互對話的方式來解決人類交給的任務。AutoGen 代理是可定制的、可對話的&#xff0c;并且無縫地允許人類參與。他們采用LLM、人類輸入和各種工具組合的各種運作模式。 AutoGen …

二分查找25(Leetcode1498滿足條件的子序列數目)

代碼&#xff1a; 這道題不能用Math.pow 精度不夠 得自己寫個數組存2的n次方 class Solution {public int numSubseq(int[] nums, int target) {int mod 1000000007;int n nums.length;System.out.println(n);int[] f new int[100005];f[0]1;for(int i1;i<f.length;i){…

docker 安裝mysql 主從復制

一、搭建主服務器的mysql 1.1 先新建文件夾 mkdir -p /data/dockerData/mysql-master/conf 1.2 進入/data/dockerData/mysql-master/conf目錄下新建my.config, [mysqld] ## 設置server_id&#xff0c;同一局域網中需要唯一 server_id101 ## 指定不需要同步的數據庫名稱 bin…

論文閱讀《High-frequency Stereo Matching Network》

論文地址&#xff1a;https://openaccess.thecvf.com/content/CVPR2023/papers/Zhao_High-Frequency_Stereo_Matching_Network_CVPR_2023_paper.pdf 源碼地址&#xff1a; https://github.com/David-Zhao-1997/High-frequency-Stereo-Matching-Network 概述 在立體匹配研究領域…

web漏洞原理與防御策略,web漏洞怎么挖掘

目錄 Web安全的重要性 ?編輯常見的Web漏洞類型及其原理&#xff1a; 1、跨站腳本攻擊&#xff08;XSS&#xff09;: 2、SQL注入: 3、跨站請求偽造&#xff08;CSRF&#xff09;: 4、遠程文件包含&#xff08;RFI&#xff09;和本地文件包含&#xff08;LFI&#xff09;:…

Spring Boot實現接口冪等

Spring Boot實現接口冪等 1、pom依賴 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http:…