sql基础
start with 递归查询当一张表出现层级关系,需求查询树状结果例图:
1234Select ID, PID, DSC, LEVELFrom DEMOStartWith ID ='00001'ConnectBy nocycle prior ID = PID;
nocycle : 跳出循环prior :
prior放在子节点端,则表示扫描树是以start with指定的节点作为根节点从上往下扫描。可能对应一个或多 个分支。start with可以省略,如果省略,表示对所有节点都当成根节点分别进行遍历
prior放在父节点端,则表示扫描树是以start with指定的节点作为最低层子节点,从下往上扫描。顺序是子节点往父节点扫描,直到根节点为止,这种情况只能得到一个分支。Group By 字句增强 grouping sets
使用grouping sets代替多次union例:
12345678select DEPARTMENT_ID,JOB_ID,null as MANAGER_ID,max(SALARY),min(SALARY)from EMPLOYEESgr ...
spark分区
问题如下读取mysql表时默认是一个分区 查询结果只有一个task在跑
1val jdbcDF = spark.read.jdbc(url,tableName,prop)
这种读取读大表(千万级)就会OOM因此在读取时要用到spark分区
理解spark分区就是将一个非常大的任务拆分为多个小任务,小任务数量最好满足整除Executor数量*Executor核心数量,这样可以提供资源利用率。这就是在spark调优中,增大RDD分区数目,增大任务并行度的原因。
spark分区 什么时候增加的,增加有什么用?接下来的描述,是针对于sparksql(也就是把数据加载成Dataset之后再处理)来说的。
1.增加分区数,可以增加并行度,当spark申请的cpu核心足够的情况下,可以同时跑不同分区的数据(因为一个分区的数据,只能由一个核心来跑,不能多个)
2.手动增加,使用repartition来将所有数据打散
3.自动增加,spark有个参数:spark.sql.shuffle.partitions,默认值为200。也就是说当触发shuffle逻辑的时候,数据会自动分为200个分区运行,但是在数 ...
vue学习记录
windows开发环境nodejs环境安装安装时将 nodejs和npm添加到系统环境变量 测试是否安装成功:nodejs里面会安装npm指令,显示版本号安装成功。
配置nodejs prefix(全局)和cache(缓存)路径先找到nodejs的安装目录(E:\nodejs)在nodejs安装路径下,新建global和cache两个文件夹命令进行修改设置
12npm config set cache "E:\nodejs\cache"npm config set prefix "E:\nodejs\global"
设置环境变量添加node_global HOME添加到path安装webpack、vue-cli脚手架构建工具
12npm install webpack -gnpm install vue-cli -g
查看安装是否成功
创建一个vue项目在dos命令行在硬盘上找一个文件夹放工程用的: cd 目录路径安装vue脚手架输入:vue init webpack demo,注意这里的“demo” 是项目的名称可以说是随便的起名,但是需要主 ...
spark将数据加载到hbase--bulkload方式
通过bulkload方式加载数据优点:与put方式相比1.导入过程不占用Region资源2.能快速导入海量的数据3.节省内存应该是业界将数据载入hbase常用方式之一,因此有必要学习掌握
实现步骤步骤一 读取数据生成rdd读入数据是面向行的表,一行有多个字段,需要转换成面向列的数据,构造keyValue对象,一定要注意key们要排序,比如user:age列要在user:gender列之前需要设计行键保证行键唯一和避免数据都涌入一个region,如我的是按时间设计的,好几个月的数据,因此将数据按月预分区。
12345678910111213141516171819202122232425 val rdd = sc.textFile("file:///"+filePath) .flatMap(x=>getLineData(x,rowKeyBase,HBaseUtils.LOG_FIELD_NAMES)) .sortByKey()//处理每一条记录生成keyvalue对象def getLineData(line:String,rowkey:Strin ...
ubuntu sudo执行shell脚本环境变量失效
问题描述普通用户下,设置并export一个变量,然后利用sudo执行echo命令,能得到变量的值,但是如果把echo命令写入脚本,然后再sudo执行脚本,就找不到变量,未能获取到值,如题情况如下:
123456789$ cat tesh.sh echo $var $ var=aaa $ export var # export 变量 $ sudo echo $var # sudo执行echo命令,返回变量值 aaa $ sudo bash test.sh # sudo执行脚本,不能获取变量值 $ bash test.sh # 普通用户执行脚本,返回变量值
原因sudo运行时,会默认重置环境变量为安全的环境变量,也即,但前面设置的变量都会失效,只有少数配置文件中指定的环境变量能保存下来。
sudo的配置文件是 /etc/sudoers 需要root权限才能读取:
12345678$ sudo sed ‘/^#/d;/^ ...
Hive网站日志采集统计分析
前言本次实践的目的是结合之前所学flume、hadoop、hive几个主要技术,完成一个小案例。目标:统计出独立ip数量统计一个ip使用的header数量访问最多的url链接 每个ip常访问的url单日每小时访问量折线图
准备安装并配置好flume、hadoop、hivehive安装配置hadoop安装配置数据源 nginx日志文件access.log需修改nginx日志输出格式满足如下格式,可减免数据清洗步骤
1210.88.122.105 09:15:04 GET /js/pagination.js HTTP/1.1304 0 "http://10.88.105.20:8063/stockrecommand.html" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0 ...
Hive新浪微博日志查询分析
数据描述123456[{"beCommentWeiboId":"","beForwardWeiboId":"","catchTime":"1387159495","co mmentCount":"1419","content":"分享图片","createTime":"1386981067","info1":"","info2":"","info3":"","mlevel":"" ,"musicurl":[],"pic_list": ["http://ww3.sinaimg.cn/thumbnail/40d61044jw1ebixhn ...
Hive学习记录
安装配置1.下载 2.解压 3.重命名 4.添加环境变量
1234vi /etc/proflieexport HIVE_HOME=/export/servers/hive-2.3.8export PATH=$PATH:$HIVE_HOME/binsource /etc/profile
修改配置文件cp hive-env.sh.template hive-env.sh
Hive Metastore配置将自带的derby数据库替换为mysql数据库 可使多用户连接
参考文章 https://my.oschina.net/u/4292373/blog/3497563
新增hive-site.xml文件记坑hive-default.xml.template 的开头就写明了 WARNING!!!对该文件的任何更改都将被Hive忽略其实hive-site.xml是用户定义的配置文件,hive在启动的时候会读取两个文件一个是hive-default.xml.template 还有一个就是hive-site.xml在复制的hive-site.xml里保存你写的配置项,然后将其他的删掉,hive-sit ...
spark job的几种提交流程
standalone集群启动后worker向master注册信息,通过spark-submit提交任务时,在任务提交节点或Client启动driver,在driver创建并初始化sparkContext对象,包含DAGScheduler和TaskScheduler,TaskScheduler与Master节点通讯申请注册Application,Master节点接收到Application的注册请求后,通过资源调度算法,在自己的集群的worker上启动Executor进程;启动的Executor也会反向注册到TaskScheduler上DAGScheduler:负责把Spark作业转换成Stage的DAG(Directed Acyclic Graph有向无环图),根据宽窄依赖切分Stage,然后把Stage封装成TaskSet的形式发送个TaskScheduler;所有task运行完成后,SparkContext向Master注销,释放资源;参考文章
spark on yarn配置在client节点配置中spark-env.sh添加Hadoop_HOME的配置目录即可提交yarn 任务, ...
Spark学习记录
spark介绍Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发的通用内存并行计算框架Spark使用Scala语言进行实现,它是一种面向对象、函数式编程语言,能够像操作本地集合对象一样轻松地操作分布式数据集,具有以下特点:1.运行速度快:Spark拥有DAG执行引擎,支持在内存中对数据进行迭代计算。官方提供的数据表明,如果数据由磁盘读取,速度是Hadoop MapReduce的10倍以上,如果数据从内存中读取,速度可以高达100多倍。2.易用性好:Spark不仅支持Scala编写应用程序,而且支持Java和Python等语言进行编写,特别是Scala是一种高效、可拓展的语言,能够用简洁的代码处理较为复杂的处理工作。3.通用性强:Spark生态圈即BDAS(伯克利数据分析栈)包含了Spark Core、Spark SQL、Spark Streaming、MLLib和GraphX等组件,这些组件分别处理Spark Core提供内存计算框架、SparkStreaming的实时处理应用、Spark SQL的即席查询、MLl ...