首页 文章 精选 留言 我的

精选列表

搜索[csdn],共5966篇文章
优秀的个人博客,低调大师

Hive分区、分桶操作及其比较(转自:http://blog.csdn.net/epitomizelu/article/details/41...

1,Hive分区。 是指按照数据表的某列或某些列分为多个区,区从形式上可以理解为文件夹,比如我们要收集某个大型网站的日志数据,一个网站每天的日志数据存在同一张表上,由于每天会生成大量的日志,导致数据表的内容巨大,在查询时进行全表扫描耗费的资源非常多。那其实这个情况下,我们可以按照日期对数据表进行分区,不同日期的数据存放在不同的分区,在查询时只要指定分区字段的值就可以直接从该分区查找。 下面从用shell命令操作分区表和从hdfs文件系统查看分区表相结合的方式加深对分区表的认识。 第一,创建分区表并将本地文件中的数据加载到分区表中。 要注意的是:首先,创建分区表的时候,要通过关键字 partitioned by (name string)声明该表是分区表,并且是按照字段name进行分区,name值一致的所有记录存放在一个分区中,分区属性name的类型是string类型。当然,可以依据多个列进行分区,即对某个分区的数据按照某些列继续分区。 其次,向分区表导入数据的时候,要通过关键字partition(name=“jack”)显示声明数据要导入到表的哪个分区,这里表示要将数据导入到分区为name=jack的分区。 再次,这里要重点强调,所谓分区,这是将满足某些条件的记录打包,做个记号,在查询时提高效率,相当于按文件夹对文件进行分类,文件夹名可类比分区字段。这个分区字段形式上存在于数据表中,在查询时会显示到客户端上,但并不真正在存储在数据表文件中,是所谓伪列。所以,千万不要以为是对属性表中真正存在的列按照属性值的异同进行分区。比如上面的分区依据的列name并不真正的存在于数据表中,是我们为了方便管理添加的一个伪列,这个列的值也是我们人为规定的,不是从数据表中读取之后根据值的不同将其分区。我们并不能按照某个数据表中真实存在的列,如userid来分区。 第二,查看分区表目录: 通过如下命令查看分区表在文件系统中的存储路径,我们会发现分区所依据的列反应在文件路径上,上面安装name=“jack”分区,实际上是创建了一个文件夹名为name=jack,并将该此导入的数据放置该在文件夹下面。 大家会发现,在下图中当我们使用cat命令查看文件内容时,会发现这个伪列也有显示在客户端,这其实只是显示的一种效果而已,后面我们会同hdfs文件系统查看文件内容,会发现文件中其实没有真正存储这列数据。 第三,查看分区数据: 分区的目的就是提高查询效率,查询分区数据的方式就是指定分区名,指定分区名之后就不再全表扫描,直接从指定分区(如name=jack的分区)中查询,从hdfs的角度看就是从相应的文件系统中(如name=jack文件夹下)去查找特定的数据。如下图所示: 第四,查看分区信息: 第五,向分区中插入数据: 在这个操作中,我们就可以验证分区所依据的列其实是一个伪列,如果你要从具有相同结构的分区表中导入数据,会失败。比如两个分区表,都有两个真实的列和一个分区列(伪列),我们要将一个分区表中的数据导入到另一个分区表,会报错。错误信息显示要导入的表只有两列(伪列不记在内,这说明其实数据表文件中只有两列),而源表却有三列(将伪列计算在类),我觉得这是一个bug。 2,分桶。 分桶是相对分区进行更细粒度的划分。分桶将整个数据内容安装某列属性值得hash值进行区分,如要安装name属性分为3个桶,就是对name属性值的hash值对3取摸,按照取模结果对数据分桶。如取模结果为0的数据记录存放到一个文件,取模为1的数据存放到一个文件,取模为2的数据存放到一个文件。 第一,如何分桶: 注意:第一,分桶之前要执行命令hive.enforce.bucketiong=true; 第二,要使用关键字clustered by 指定分区依据的列名,还要指定分为多少桶,这里指定分为3桶。 第三,与分区不同的是,分区依据的不是真实数据表文件中的列,而是我们指定的伪列,但是分桶是依据数据表中真实的列而不是伪列。所以在指定分区依据的列的时候要指定列的类型,因为在数据表文件中不存在这个列,相当于新建一个列。而分桶依据的是表中已经存在的列,这个列的数据类型显然是已知的,所以不需要指定列的类型。 第二,向桶中插入数据: 第三,查看桶信息: 由上图可知分3个桶就是将数据表由一个文件存储分为3个文件存储。 第四,查看分桶数据: 要指定关键字tablesample。 3,分区又分桶。 可以对数据表分区之后继续分桶。 但是分区之后继续分桶,我们在hdfs文件系统上看不出分桶的多个数据表文件,只能看见一个文件,但是能从文件路径上看出分区的信息。 看看分区又分桶的查询结果:

优秀的个人博客,低调大师

欢迎使用CSDN-markdown编辑器Python爬虫初接触,学会爬虫不抓美女图片干啥!

学习编程语言是很枯燥的,尤其是对一个编程零基础的人来说,更为枯燥!所以我们要从枯燥的学习中找点乐趣和动力!比如,抓点小姐姐的图片 我们的目标选择唯一图库,url自己去找【人工呲牙笑】 这个网站没有反爬,特别好爬,打开主页后,找到美女图片分类 上面分类没有这个分类,自己想办法进入哦。。。 然后往下拉,就会发现N多的图集,我们先去找找翻页,记得先打开F12开发者工具,然后选择翻页,查看源代码中位置! 可以看到这里就是控制页面翻页的源代码了,我们直接拿到a标签的href属性,这个是最后一页的地址,将属性中的“789”切出来,就拿到了最大页码,然后循环拿到所有页面的url,如下图 这样就拿到所有页面的url了,然后我们取图集的url,同样的方式,找到源码中url的位置 img_urls = etree.HTML(requests.get(url_i).text).xpath('//div[@class="ABox"]/a/@href') #url_i 是页面的url,也就是上个代码截图中那个列表,循环遍历出来的 一行代码就取到了所有a标签下的图集地址,一页有24个图集!这里我们用一个函数来获取所有图集内图片地址并返回图集名字和图片地址 这样,主要内容就写完了,然后就是构建整个代码,写入本地,我还将之前做的进度条也加进去了,整体代码和效果发出来看看! import os import time import requests from lxml import etree def get_img_url(url): ''' :param url: 图集url :return: 图集名字和图片地址所构成的字典 ''' img = {}#空字典,用于放图片url和对应的编号 html = requests.get(url)#获取页面源码 html.encoding = 'gb2312' data = etree.HTML(html.text)#解析 title = data.xpath('//div[@class="wrapper clearfix imgtitle"]/h1/text()')[0]#图集名 page = data.xpath('//div[@class="wrapper clearfix imgtitle"]/h1/span/span[2]/text()')[0]#图集图片数 img['1'] = data.xpath('//a[@class="down-btn"]/@href')[0]#第一张的图片地址 for i in range(2,int(page)+1): #其余的图片地址 img_url = etree.HTML(requests.get(url.replace('.html','_%s.html'%str(i))).text).xpath('//a[@class="down-btn"]/@href')[0] img['%s'%str(i)] = img_url#写入字典 return title,img def downloader(url,path,name,header={}): start = time.time()#开始时间 if os.path.exists(path): # 判断路径及文件夹是否存在,不存在即创建 pass else: os.mkdir(path) size = 0 if header is None: response = requests.get(url, stream=True)#stream属性必须带上 else: response = requests.get(url, stream=True,headers=header)#stream属性必须带上 chunk_size = 1024#每次下载的数据大小 content_size = int(response.headers['content-length'])#总大小 if response.status_code == 200: print('[文件大小]:%0.2f MB' % (content_size / chunk_size / 1024))#换算单位并print with open(path+'\\%s'%name, "ab") as file: for data in response.iter_content(chunk_size=chunk_size): file.write(data) file.flush()#清空缓存 size += len(data)#已下载文件大小 #\r指定行第一个字符开始,搭配end属性完成覆盖进度条 print('\r'+'[下载进度]:%s%.2f%%' % ('>'*int(size*50/ content_size),float(size / content_size * 100)),end='') end = time.time()#结束时间 print('\n'+"%s下载完成!用时%.2f秒"%(name,(end-start))) if __name__ == '__main__': url_list=[]#放入所有页面url url = 'http://www.mmonly.cc/mmtp/' url_list.append(url)#先放入第一页 html = requests.get(url) html.encoding = 'gb2312' page = etree.HTML(html.text).xpath('//a[text()="末页"]/@href')[0].split('_')[-1].split('.')[0] for i in range(2,int(page)+1): url_list.append(url+'list_9_{}.html'.format(str(i)))#其余页面url,注意第一页和其他页不一样 for url_i in url_list: img_urls = etree.HTML(requests.get(url_i).text).xpath('//div[@class="ABox"]/a/@href') for img_url in img_urls: title,imgs = get_img_url(img_url) for img in imgs.keys(): path = 'E:\\python\\mn\\%s' % title downloader(url= imgs[img],path=path,name='%s.jpg'%(title+img)) 其实这里我想说的是,整个网站很标题党。。。完全不符合标题的。

优秀的个人博客,低调大师

(转载自CSDN

今天的主题是《云网络技术架构的演进之路》,主要介绍阿里云网络产品从无到规模应用的 10 年过程中,云网络技术平台洛神是怎么发展的。 阿里云飞天洛神云网络平台 阿里云系统叫飞天,云网络平台称为洛神,洛神和飞天系统的关系如下图所示,洛神云网络平台是阿里云飞天操作系统内核的核心组件和系统服务,伴随着飞天系统一起诞生、成长。图 1 阿里云网络洛神平台与飞天操作系统 整个飞天系统架构分为几个层次,底层数据中心基础设施,包含物理资源、机房、服务器,还有多地域和可用区(AZ)、物理网络等;其上是飞天操作系统的核心,支撑了整个云计算的虚拟化,包括计算平台神龙,存储平台盘古,以及网络平台洛神;基于系统核心组件,构建了面向用户的系统服务以及原生服务,支撑不同行业客户在阿里云上构建自己的应用系统。 飞天洛神平台的诞生 洛神伴随飞天系统诞生,是云计算产业发展的结果

优秀的个人博客,低调大师

CSDN博主将与北京航天航空大学出版社合作出版<嵌入式C语言技术实战开发>一书

本书作者由以下成员合作编写: 杨源鑫,主编,毕业于广州科技贸易职业学院电子应用技术专业,在校期间一并考取了华南理工大学本科数字媒体艺术专业。2015年7月工作至今,任伟易达集团嵌入式系统工程师一职,主要从事单片机,linux,Android底层开发等相关的技术。 侯继红,副主编,广州科技贸易职业学院电子信息工程技术专业教师,主要担任单片机应用技术、CPLD/FPGA应用技术、PCB应用技术课程的教学工作及企业项目开发工作。有丰富的教学经验及工程项目设计实践经验,近几年,通过CDE创新工作室培养了发不少嵌入式开发人才,曾指导学生获得广东省技能竞赛二等奖3项目,每年指导学生获得广东省大学生科技创新培育专项资金资助,并且研发的科技创新作品于2015年获得广东省挑战杯二等奖。 陈锦勇,副主编,目前为珠海爱肯智能设备有限公司研发部技术总监,曾在知名培训机构尚观担任嵌入式开发讲师,有多年的研发经验,对单片机,linux,Android有深入的理解。 刘凯强,副主编,目前为深圳科曼信息技术有限公司任职嵌入式开发工程师,现今主要从事Android底层和framework层的开发工作。 书籍预计将于2017年10月份编写完成,敬请各位期待! 目录如下: 序言 第一章 嵌入式开发是什么? 1.1 引言 1.2 嵌入式开发需要哪些知识储备 1.3 常见的嵌入式开发平台 1.3.1 单片机系列 1.3.2 ARM系列 1.4 嵌入式Arm Linux系统的构成 1.4.1 硬件电路基础 1.4.2 bootloader 1.4.3 内核 1.4.4 文件系统 1.4.5 应用程序 1.5 本章小结 第二章 嵌入式C开发在工作中的应用 2.1 C语言核心知识 2.1.1数据段、代码段、堆栈段、BSS段的区别 2.1.2位,字,字节,字符等基础 2.1.3 进制转换基础 2.1.4嵌入式常用位运算基础与深入学习 2.2 实践案例 2.2.1位运算工作运用实战开发案例(一):如何分离一个数的高低位 2.2.2 位运算工作运用实战开发案例(二):如何将两个字节合并为一个字节 2.2.3 位运算工作运用实战开发案例(三):Linux内核中实现的高低位互换函数 2.2.4 位运算工作运用实战开发案例(四):嵌入式C快速翻转一个数的二进制高低位 2.2.5 位运算项目实战1:如何对一个有规律的数组表进行位移(电子琴LED彩灯案例) 2.2.6 位运算项目实战2:分离一个16进制数取出相应的位1或位0(电子琴音频解码案例) 2.3 预处理 , const、static、字符串处理在嵌入式中的应用 2.3.1 宏定义与typedef的区别 2.3.2 const关键字 2.3.3 static关键字 2.3.4 sizeof 2.3.5 strcat 函数 2.3.6 strcpy 函数 2.3.7 strlen 函数 2.3.8 strcmp函数 2.4 C语言内存管理与指针 2.4.1 一维数组 2.4.2 二维数组 2.4.3 C语言之指针 2.4.4 为什么内存是线性分布的 2.4.5 深入浅出剖析函数指针与回调函数 2.5 谁说面向过程语言C不能面对对象化 2.5.1 C语言之结构体 2.5.2 C语言之结构体对齐 2.5.3 结构体的封装性之结构体内嵌函数指针 2.5.4 结构体的继承性之结构体中内嵌结构体 2.5.5 结构体之多态性之结构体中void *万能指针 2.5.6 Linux内核中offset宏与container_of宏深度剖析 2.5.7 什么是共用体联合体与大小端 2.6 C语言之标准C文件操作应用 2.6.1 fopen函数、fclose函数 2.6.2 fwrite函数、fread函数 2.6.3 lseek函数 2.6.4 sprintf函数 2.7 实战项目 2.7.1 熟悉STM32单片机库函数使用 2.7.2 弹弹方块C语言实现 2.7.3 学生信息管理系统的实现 2.7.4 空洞文件与一次性产生多个文件 2.7.5 checksum软件的设计原理与应用 2.7.6 使用C语言编写一个能够将二进制文件转化为一个C数组头文件。 2.7.7 数据压缩与解压缩算法C语言实现 2.7.8 字符串压缩算法与解压缩算法C语言实现 2.7.9 C语言之查表法项目运用 2.8 本章小结 第三章 嵌入式Linux 基础 3.1 Linux系统简介 3.1.1使用Vmware虚拟机安装Linux操作系统 3.1.2 Linux工作中基本命令的操作 3.2 Linux 工作中vim编辑器的操作 3.2.1在Linux下快速入门Linux C语言编程 3.2.2在Linux下使用GDB调试代码 3.2.3 Linux 下Shell脚本基础编程快速入门 3.3 利用Makefile管理软件工程 3.4 在Linux下制作静态库和动态链接库的方法 3.5 为你的Linux系统配置网络 3.6 Linux下配置网络与搭建服务器 3.6.1 Linux下搭建telnet服务器 3.6.2 Linux下搭建samba服务器 3.7 代码管理 3.7.1 使用Source Insight开发项目 3.7.2 使用Git管理本地代码 3.8 使用SecureCRT软件的串口调试功能 3.9 本章小结 第四章 嵌入式Linux应用开发基础 4.1 文件IO 编程 4.2 进程实战开发 4.3 进程间通信 4.4 多线程编程 4.5 网络编程 4.6 项目实战 4.6.1实战项目(一): Linux audio编程实战 4.6.2实战项目(二): 利用V4L2编写一个摄像头应用程序 4.6.3实战项目(三):Input系统应用编程实例 4.6.4实践项目(四):Linux 下C语言BMP图操作编程 4.7 本章小结 第五章 基于ARM contexA9 Linux驱动实战开发 5.1 认识开发板友善之壁开发板 5.2 从零开始搭建友善之臂tiny4412开发环境 5.3 编译uboot与linux内核 5.4 制作根文件系统 5.5 熟悉开发板的启动方式 5.6 如何刷写开发板 5.7 Linux设备驱动程序开发 5.7.1手把手教你实现字符设备驱动 5.7.2 简单的Kconfig与Makefile编写 5.7.3 手把手教你实现misc设备驱动 5.7.4 手把手教你实现中断 5.7.5 手把手教你实现定时器 5.7.6 手把手教你实现中断底半部tasklet实现 5.7.7 手把手教你实现中断底半部workqueue实现 5.7.8 手把手教你实现input设备驱动程序 5.7.9 认识板级文件 5.8 实践项目: 5.8.1基于tiny4412 led驱动编程 5.8.2基于tiny4412 蜂鸣器驱动编程 5.8.3获取开发板上独有的ID号 5.8.4 基于tiny4412 adc驱动编程 5.8.5基于tiny4412的ft5x06触摸屏驱动编写 5.8.6 Linux内核中最常用的调试方法----printk函数的使用 5.9 本章小结 第六章 全文总结

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册