首页 > 其他分享 >学习笔记6

学习笔记6

时间:2024-01-17 18:22:47浏览次数:29  
标签:函数 Scala 笔记 学习 参数 Hive SQL Spark

Scala匿名函数(函数字面量)
Scala中的匿名函数也叫做函数字面量,既可以作为函数的参数使用,也可以将其赋值给一个变量,在匿名函数的定义中“=>”可理解为一个转换器,它使用右侧的算法,将左侧的输入数据转换为新的输出数据,使用匿名函数后,我们的代码变得更简洁了。

val test = (x:Int) => x + 1
Scala高阶函数
Scala使用术语“高阶函数”来表示那些把函数作为参数或函数作为返回结果的方法和函数。比如常见的有map,filter,reduce等函数,它们可以接受一个函数作为参数。

Scala闭包
Scala中的闭包指的是当函数的变量超出它的有效作用域的时候,还能对函数内部的变量进行访问;Scala中的闭包捕获到的是变量的本身而不仅仅是变量的数值,当自由变量发生变化时,Scala中的闭包能够捕获到这个变化;如果自由变量在闭包内部发生变化,也会反映到函数外面定义的自由变量的数值。

Scala部分应用函数
部分应用函数只是在“已有函数”的基础上,提供部分默认参数,未提供默认参数的地方使用下划线替代,从而创建出一个“函数值”,在使用这个函数值(部分应用函数)的时候,只需提供下划线部分对应的参数即可;部分应用函数本质上是一种值类型的表达式,在使用的时候不需要提供所有的参数,只需要提供部分参数。

Scala柯里化函数
scala中的柯里化指的是将原来接受两个参数的函数变成新的接受一个参数的函数的过程,新的函数返回一个以原有第二个参数作为参数的函数;

def someAction(f:(Double)=>Double) = f(10)

Shark和Spark SQL
Shark的出现,使得SQL-on-Hadoop的性能比Hive有了10-100倍的提高,但Shark的设计导致了两个问题:

一是执行计划优化完全依赖于Hive,不方便添加新的优化策略
二是因为Spark是线程级并行,而MapReduce是进程级并行,因此,Spark在兼容Hive的实现上存在线程安全问题,导致Shark不得不使用另外一套独立维护的打了补丁的Hive源码分支 ;
Spark SQL在Hive兼容层面仅依赖HiveQL解析、Hive元数据,也就是说,从HQL被解析成抽象语法树(AST)起,就全部由Spark SQL接管了。Spark SQL执行计划生成和优化都由Catalyst(函数式关系查询优化框架)负责 ;

DataFrame和RDD
Spark SQL增加了DataFrame(即带有Schema信息的RDD),使用户可以在Spark SQL中执行SQL语句,数据既可以来自RDD,也可以是Hive、HDFS、Cassandra等外部数据源,还可以是JSON格式的数据,Spark SQL目前支持Scala、Java、Python三种语言,支持SQL-92规范 ;

DataFrame的推出,让Spark具备了处理大规模结构化数据的能力,不仅比原有的RDD转化方式更加简单易用,且获得了更高的计算性能;
Spark可轻松实现从MySQL到DataFrame的转化,且支持SQL查询

标签:函数,Scala,笔记,学习,参数,Hive,SQL,Spark
From: https://www.cnblogs.com/liucaizhi/p/17970699

相关文章

  • 一起学习Avalonia
    一起学习Avalonia(一)一起学习Avalonia(二)一起学习Avalonia(三)一起学习Avalonia(四)一起学习Avalonia补充(Linux下的使用开发)一起学习Avalonia(五)一起学习Avalonia补充(deepin下的使用开发t调试)一起学习Avalonia(六)一起学习Avalonia(七)一起学习Avalonia(八)一起学习Avalonia(......
  • Print linked list using recursion【1月17日学习笔记】
    点击查看代码//Printlinkedlistusingrecursion#include<iostream>usingnamespacestd;structnode{ intdata; node*next;};voidprint(node*p){ if(p==NULL)return;//递归中止条件 cout<<p->data<<""; print(p->next)......
  • Reverse a linked list【1月17日学习笔记·】
    点击查看代码//Reverssealinkedlist#include<iostream>usingnamespacestd;structnode{ intdata; node*next;};node*A;voidreverse(){ node*next;//用于保存下一个·节点地址以便索引 node*current=A;//当前索引 node*prev=NULL;//保存上一个节点......
  • VT-X的学习历程(一)
    学习的目标就是如何实现一个简单VT框架并拦截指令的调用以及EPTHOOK的实现。大概的流程检测是否允许开启VT。a.我们可以从白皮书的24.6DISCOVERINGSUPPORTFORVMX章节中得到这样的信息b.其次就是设置smxc.检测CPUID是否支持VTcpuid第5位是否为1Define.h#prag......
  • MyBatis学习记录之MyBatis入门程序
    MyBatis学习记录之MyBatis入门程序前言这篇文章是我第二次学习b站老杜的MyBatis相关课程所进行的学习记录,算是对课程内容及笔记的二次整理,以自己的理解方式进行二次记录,其中理解可能存在错误,欢迎且接受各位大佬们的批评指正;关于本笔记,只是我对于相关知识遗忘时快速查阅了解使......
  • Avalonia 11 学习笔记
    Avalonia学习之样式Avalonia学习之样式的选择器和伪类Avalonia学习之资源使用Avalonia学习之绑定Avalonia学习之属性Avalonia学习之自定义控件Avalonia实现一条虚线Avalonia使用d:DataContext实现设计时预览Avalonia实现滑动加载Avalonia通过ef操作sqlite......
  • 中科院罗小舟团队提出 UniKP 框架,大模型 + 机器学习高精度预测酶动力学参数
    作者:李宝珠编辑:三羊中国科学院深圳先进技术研究院罗小舟团队提出了,基于酶动力学参数预测框架(UniKP),实现多种不同的酶动力学参数的预测。众所周知,生物体内的新陈代谢是通过各种各样的化学反应来实现的。这些反应如果在体外进行,通常需要在高温、高压、强酸、强碱等剧烈条件下才......
  • 【机器学习】特征选择与稀疏学习
    特征选择和稀疏学习子集搜索与评价对象都有很多属性来描述,属性也称为特征(feature),用于刻画对象的某一个特性。对一个学习任务而言,有些属性是关键有用的,而有些属性则可能不必要纳入训练数据。对当前学习任务有用的属性称为相关特征(relevantfeature)、无用的属性称为无关特征(irrelevan......
  • Delete d node at nth position【1月17日学习笔记】
    点击查看代码//Deletednodeatnthposition#include<iostream>usingnamespacestd;structnode{ intdata; node*next;};node*A;voidinsert(intx){ node*temp=newnode; temp->data=x; temp->next=NULL; if(A==NULL){ A=temp;......
  • 【Tools】Eclipse MemoryAnalyzer(MAT)工具使用笔记
    目录一、前言1.1简介1.2下载安装二、使用2.1Histogram(直方图)2.2DominatorTree(支配树)2.3TopConsumers2.4DuplicateClasses(重复类)2.5Suspects(疑似泄露点)三、问题总结3.1分析源码3.2解决办法一、前言1.1简介EclipseMemoryAnalyzer是一个快速且功能丰富的Java堆分......