hive

阅读 / 问答 / 标签

请问archive和save的区别,谢谢

archive 存档的,已经存在了save 还未保存

outlook2019怎么建archive

outlook2019建archive:把原来的PST文件移至某指定文件夹(如D盘OUTLOOK文件夹)打开OUTLOOK,找到“帐户设置”“数据文件”,双击更改文件位置就可以了。OUTLOOKEXPRESS的邮件存储目录在C:DocumentsandSettings(你的账户名)LocalSettings(注意是隐藏文件夹)ApplicationDataIdentities{9BDCDB3A-836F-4D22-9B3B-BD0E057F50CE}(注意这个文件夹的名字可能是其他名字,但是类型是一样的)。视频资料:除了上述内容之外,互联网档案库还收集了大量的数字媒体,这些数字媒体均匹配美国公共领域或CC授权协议。这些媒体文件均会根据媒体类型(moving images、audio、text、etc.)被组织成集合,并根据各项标准被分入子集合。例如大都会艺术博物馆提供的相关资料就会被分入一个子集,目前该集合相关资料的数量已经超过了140,000个。每个主集合都含有一个“社区”子集合(以前被称为“开源”)用于存储公众的贡献。

论文 状态archive 什么意思

这种结尾方式,就是在文章结束时,以全文的内容为依托,运用简洁的语言,把主题思想明确地表达出来,或者在全文即将煞尾时,把写作意旨交待清楚,所以这种结尾方法又称“画龙点晴式”。

file和archive有什么分别啊?

file 是文件 archive 是档案,强调归档

电子文件时代,record与archive的区分是否还有必要

有的。Record (s) 与Archive (s) 是西方档案学研究的核心概念,二者的关系、使用的差异及其翻译问题一直为国内档案界所争议。本文试以解构主义为理论依据, 论述Record (S) 与Archive (S) 是相互兼容而不是非此即彼的二元对立耦合关系,并以英美两国不同的档案文化渊源和 现实论证了Record (S) 与Archive (s) 使用偏好差异的原因。研究表明,Archive (s)相比于Record (S) 被赋予更为复杂的社会性,特别包括积聚性、制度化、权力优先性等显著性特点。电子文件是指在数字设备及环境中生成,以数码形式存储于磁带、磁盘、光盘等载体,依赖计算机等设备阅读、处理并可以在通信网络上传递的文件。新近颁布的国家标准《电子文件归档与管理规范》中,电子文件的定义为“电子文件是指在数字设备及环境中形成,以数码形式存储于磁带、磁盘、光盘等载体,依赖计算机等数字设备阅读、处理,并可在通信网络上传送的文件。”电子文件是由电子计算机生成和处理,其信息以二进制数字代码记录和表示,因此亦可称为“数字文件”。这是电子文件与以往所有其他形式文件的基本区别,也是电子文件信息与其他数字信息的共同点。数字信息使用0和1两种两种数码的组合来记录信息,每一个0或1叫做1个比特,需要记录的信息用一串比特存储于计算机存储器(包括内存储器和各种外存储器)中,并可通过通信网络进行传输。

archive 什么意思啊 我在我的电脑压缩文件看见的

不是病毒,是压缩软件中的一个压缩文件夹,可以将要压缩的东西放在里面

如何查看archive 格式文件的内容

下载个解压软件,比如WinRAR,双击打开刚才下载的WinRAR软件,会弹出一个让你选择安装的程序,你可以只选择ZIP格式,建议全部默认即可。安装完后,右键打开的ZIP格式文件即可。

怎么archive outlook

Outlook的邮件存档的文件后缀名是eml,按理说是可以直接双击调用Outlook程序打开的,不不需要从文件-->打开-->outlook数据文件-->选择存档的文件打开。你打开存档的邮件并不会覆盖现有的邮件,关于你打开的存档是空白的问题,可能是你存档的是空白文档,挥着你存档的文件已经损坏。Outlook关于恢复已存档的项目——适用于: Microsoft Office Outlook 2003将所有已存档的项目从 .pst 文件复制回它们的原始文件夹————在“文件”菜单上,单击“导入和导出”。 单击“从另一程序或文件导入”。单击“下一步”。 单击“个人文件夹文件 (.pst)”。单击“下一步”。 在“导入文件”框中,将路径中的默认文件名 backup.pst 改为要导入的存档文件的名称。单击“下一步”。 单击要导入的文件夹。如果需要,单击“包括子文件夹”。 指定希望 Outlook 如何处理重复项目。 单击“导入项目到相同文件夹”,再单击与导入文件夹同名的文件夹。 单击“完成”。 将所有已存档的项目从 .pst 文件复制到新文件夹————在 Outlook 中,创建要复制已存档项目的新文件夹。 在“转到”菜单上,单击“文件夹列表”,再在“文件夹列表”中单击新文件夹。 在“文件”菜单上,单击“导入和导出”。 单击“从另一程序或文件导入”。单击“下一步”。 单击“个人文件夹文件 (.pst)”。单击“下一步”。 在“导入文件”框中,将路径中的默认文件名 backup.pst 改为导入的存档文件的名称。单击“下一步”。 单击要导入的文件夹。如果需要,单击“包括子文件夹”。 指定希望 Outlook 如何处理重复项目。 单击“导入项目到当前文件夹”。 单击“完成”。 将单独项目从 .pst 文件移动到它们的原始文件夹或新文件夹中————在“转到”菜单上,单击“文件夹列表”,再单击“存档文件夹”(或存档位置使用的名称)。单击包含要移动的项目的文件夹。选中要移动的项目,然后将其拖到“文件夹列表”中它们的原始文件夹中。

archive后缀的文件怎么打开

文件,可以用gsview直接打开,其支持gzip如果是用IE下载的,有可能实际已经解开,可以去掉gz后缀试试。9.psz:改成*.ps.gz试试,然后用gzip或者winzip

邮件archive是什么意思

Archive now就是马上备份你的邮件,Archive就是按计划备份,比如:你定义几星期前的邮件需要备份。

江湖 翻译成英文是什么?Archive 这个不是我想要的

如果是指“武林”、“黑社会”等,我认为没有完全对应的词语,可以省略不翻。

电子邮箱中的让邮件archive是什么意思啊

Archive now就是马上备份你的邮件,Archive就是按计划备份,比如:你定义几星期前的邮件需要备份。

如何查看archive 格式文件的内容

你好,你说的是imessage吗,ipad是用不了短信的,imessage才可以的 谢谢请采纳

电脑archive文件夹可以删除吗

不可删除文件夹:AMD:显卡专用文件夹,不可以删除;Drivers:驱动程序文件夹,不可以删除;intel:处理器专用文件夹,不可以删除;program Date:系统文件夹,放置系统程序,删除容易系统崩溃。Windows:操作系统的主要文件,一个都不能删除;

手机archive是什么文件夹

手机archive是归档文件夹。根据查询相关公开信息,归档文件夹就是将数据整理到外部文件,数据被存储到了指定的文件中,这些文件格式为XML。可以使用响应的方法将XML文件中的内容读取到响应的数据中。

accomplish与archive的不同

accomplish与archive的不同accomplish [英]u0259u02c8ku028cmplu026au0283 [美]u0259u02c8kɑ:mplu026au0283 vt. 完成;达到(目的);走完(路程、距离等);使完美 [例句]What is the most important thing I must accomplish tomorrow?明天我必须完成的最重要的事情是什么?archive [英]u02c8ɑ:kau026av [美]u02c8ɑ:rkau026av v. 存档 n. 档案文件;档案室 [例句]Not all the archive "s secrets are on show.不是所有的档案库秘密都展出的。【解析】以上accomplish与archive的含义完全不同,猜测是achieveachieve [英]u0259u02c8tu0283i:v [美]u0259u02c8tu0283iv vt. 取得;获得;实现;成功 vi. 达到预期的目的,实现预期的结果,如愿以偿 [例句]Higher interest rates would achieve both.提高利率能够实现这两个目标。

archive是什么意思及反义词

archive file是什么意思及反义词名词 〈计〉档案文件例句Pertaining to a system, device, file, or facility that can be used in the event of a malfunction or loss of data作为形容词用来修饰系统、装置、文件或设备,表示在发生故障或数据丢失时可替代使用。Of course, if you"re not using WordPerfect 5.1 for DOS, as I do, you can use long file names to show the contract name, draft number and draft date.当然,你可能不经常用DOS下的WordPerfect5.1软件,我是经常用的,你也可以用一个较长的文件名来清楚地表达出草拟合同的名称、编号及起草时间。Update a dictionary,file,law修订词典、档案、法律"Fiction material is often filed separately, arranged in alphabetical order of authors" names,"小说通常分类排列,要么以作者姓氏字母顺序"Line up in a single file, please"请排成一路Go to "Subscribe to Newsgroups" under the main "File" menu option, and subscribe to the desired Newsgroups.请转至"文件"菜单选项中的"订阅新闻组",以订阅所需的新闻组。When he tries to open a particular file, the application can help him find it, even if it has been moved.当其试图打开一个特殊的文件时,程序可以帮助查找,即使文件已经移动。This file system also supports large capacity drives.此文件系统也支持大容量驱动器。?IPR: filings, infringements, licensing, alliances, protection, value creation, etc.知识产权:申报、侵权、许可、联合、保护、增值等A web object can be a web page(or part thereof), an image, plain file, a directory, a Java applet, or CGI script一个Web对象可以是一个网页(或其中的部分)、一幅图象、纯文本文件、一个目录,一个Java小程序或CGI手稿。相似短语archive file n. 〈计〉档案文件cross-filer [ cross-file ]的相关名词filet de boeuf en croute phr. 威灵顿牛排file name extension phr. 文件扩展名non-dedicated file server phr. 非指定档案伺服器anonymous file transfer protocol phr. 匿名文件传输协议computer file name phr. 计算机上的文件夹名dedicated file server phr. 专属档案服务器fish filet phr. 鱼片mug file phr. 苦行类书籍相似单词cross-file vt. vi. 在两政党的预选里提名候选end-of-file n. 文件尾file n. [C] 1.文件夹,公文箱 2.订存的文件(或卡片等) 3.档案,案卷,卷宗(+on) 4.纵列 5.锉刀 v. [T] 1.把...归档(+away) 2.提出(申请等);提起(诉讼等) 3.(记者)用电话,电报发送(稿子) v.[I] 1.排成纵队行进 2.提出申请;提起诉讼(+for)filebuf 文件缓冲区filedata 文件数据FileDescription 文件描述FileFind 文件查寻程序filefish n. 豚鱼fileid 文件标识fileinfo 文件信息最新单词res nullium是什么意思 无主物(拉丁文)lachnolaimus maximus什么意思及同义词 phr. 隆头鱼laborers lodging的中文翻译及音标 工人寄宿处genus centropomus是什么意思及用法 phr. 锯盖鱼科的典型属six thousand three hundred and seventy eight的中文意思 6378Lopsided win one side game是什么意思 一面倒coarse hair是什么意思及反义词 粗毛holiday package anxiety的中文意思 节日包裹焦虑症(指因为没收到本该在圣诞节前送到的某件网购物品而感到焦虑不安的心理。)

archive是封存的意思吗

看怎么理解封存这个词,因为动词的话是存档,存档跟封存其实很类似词典释义 n.档案,档案馆,档案文件( archive的名词复数 ),档案馆,档案室v.存档( archive的第三人称单数 )

archive什么意思?

archive是互联网档案馆。互联网档案馆(英语:Internet Archive)是一个非营利性的数字图书馆组织。成立于1996年,由Alexa创始人布鲁斯特·卡利创办。提供数字数据如网站、音乐、动态图像、和数百万书籍的永久性免费存储及获取。迄至2012年10月,其信息储量达到10PB。除此之外,该档案馆也是网络开放与自由化的倡议者之一。相关信息:1996年,卡利在创建盈利性的Alexa Internet时同时也创立了互联网档案馆;同年10月开始收集存储数据。不过,直到2001年开发了“时光机”前,这些数据都无法访问。1999年末扩展收集范围。2012年8月,宣布将在其现存的130万文件的下载选项中加入BitTorrent。因为通过两个文件数据中心协调,这成为从该档案馆下载数据的最快方法。2013年11月6日,档案馆在里奇蒙德区的总部失火,损坏了许多设备和一些附近的公寓,预计损失达到60万美元。

archive是什么网站?

archive是一个时尚潮流服装品牌,它来自日本,全名叫做vainl archive,创始人是Kouhei Ohkit,衣服比较前卫、时髦,但是在国内比较小众,在日本比较受欢迎。archive.com是他们家官网联创优科 幼儿园智能化解决方案提供商 为您解答

archive怎么记忆

以下是记忆archive的一些技巧:1、分解: 将单词archive分解成各个字母,比如a-r-c-h-i-v-e。然后尝试按照特定的顺序记忆这些字母,比如先把a和i记住,然后再将c、h、r, e, v记住,最后将这些单独的字母拼起来再联系起来,形成完整的单词。2、与类似单词相联系: 尝试将archive与一些类似拼写或发音的单词联系起来,比如car, hive, or give等等,这样可以通过联想记忆来帮助自己记住archive。3、分段记忆:将单词archive分为两个部分ar-chive来记忆。将前后两个单词分别进行记忆,然后再将它们结合起来。4、联想形象:将archive与形象联系起来,可以想象一个存档箱子,里面存放着很多有价值的资料或物品,需要妥善保存。这样的形象可以有助于记忆。5、多次复习:将archive反复提醒记忆,多次阅读和写下这个单词可以帮助我们更好地记住它,渐渐地就会形成习惯性记忆。双语例句如下:1、The museum is committed to ensuring that these collections are preserved for future generations, and it has an extensive archive of historical documents and images.博物馆致力于确保这些收藏品能够为后代保存下去,并拥有大量历史文献和图像档案。2、The archive contains a wealth of information about the history of the company, including photographs, reports, and correspondence.档案馆包含了公司历史的大量信息,包括照片、报告和通信记录。3、Through the national archive system, these valuable documents are made available to researchers, scholars, and the general public.通过国家档案系统,这些有价值的文献资料对研究人员、学者和公众开放。4、The archive is an invaluable resource for anyone interested in the history of the region.档案馆是在地区历史感兴趣的人的无价之宝。5、The archive is home to many rare and important documents, including manuscripts, letters, and photographs.档案馆是许多珍贵重要的文献资料之家,包括手稿、信件和照片等。

archive网名什么意思

archive用作网名是存档的意思。archive 读音:英 ["ɑu02d0文件等)证明The history of this area is very well documented.这个地区的历史档案保存得很好。

archive是什么风格?

archive是欧式潮流风格。在时装领域中,Archive是个词频极高的存在,像是当 Demna Gvasalia 入主 BALENCIAGA 后,便最先前往品牌档案室,花上几周时间,纵观探索起了品牌过往的奥秘。对于大部分时装屋的设计师而言,Archive 有着非同寻常的意义。回溯遥远的过往,设计师将服饰展现于天桥之上的最终目的只是为了出售,故而收集 Archive 起初在时尚领域曾是一个相当新颖且具颠覆性的概念。区别于大部分人的后知后觉,Yves Saint Laurent 正是首位意识到 Fashion Archive 价值及其必要性的设计师。Archive风格背景文化:Archive是个人或组织整个生命周期中的累积,是按照文化或历史价值而挑选并长期保存的记录。针对时尚这一隅,Fashion Archive 则是过去每一季由杰出设计师们所创作出标志性单品的集合。而直到 1980 年代,更多时尚品牌才逐渐意识到了对自家作品进行Archive存档这件事的重要性。它可以是一件 Vivienne Westwood 在早年间所设计的紧身胸衣、是 John Galliano 在 DIOR 时代将凡尔赛宫廷文化融入现代廓形的华丽伞裙、可以是 Phoebe Philo 在离开 Céline 前最后剪裁的那件羊绒外套,亦或是 1989 年 Martin Margiela 灵光一现下诞生的一双 Tabi 短靴。像DIOR这类品牌对于打造 Archive 收藏确实给予了足够的重视,甚至还有一些品牌正在投入大量资源,以建立博物馆的方式来收藏各类作品,比如 Yves Saint Laurent 就在近年来分别于巴黎和马拉喀什开设了两家博物馆,用以珍藏其创始人的作品。

Archive是什么意思?

文档

Archive是什么意思

[英] [u02c8ɑ:kaivz] 发音 词典释义 n.档案,档案馆,档案文件( archive的名词复数 ),档案馆,档案室v.存档( archive的第三人称单数 )

archive是什么意思

archive[英][u02c8ɑ:kau026av][美][u02c8ɑ:rkau026av]v.存档; n.档案文件; 档案室;来自英语牛人团望楼主您能采纳一下 谢谢你了哦!

archive什么意思

archive意思:档案室,档案馆档案,指保存历史事件的记录、文献或其它材料或搜集物。相关短语:archive site 存档网点 ;archive file 归档文件;archive hierarchy 档案库层次 ;magnetic tape archive 磁带库;archive attribute 存档属性 ;sound archive 音响资料馆;achieve equilibrium 取得平衡 ;achieve results 做出成绩;有所作为。相关例句:1、The multivolume archive was created successfully.成功创建多卷存档。2、The repository is the official archive of our work.库是我们的正式的档案。3、she went to the city archive this morning.她今天上午去了市档案馆。4、It"s a good idea to archive your files once a week.一个星期对你的文件存档一次是个不错的主意。5、The system will archive the information so agencies can review it in detail.该系统会将该信息存档,以便各代理机构能对其详细审阅。

archive什么意思?

archive指档案。archive英[u02c8ɑu02d0kau026av]美[u02c8ɑu02d0rkau026av]n. 档案文件;档案;档案馆;档案室。vt. 把…存档;把…归档;将(不常用信息)存档。[其他] 第三人称单数:archives复数:archives现在分词:archiving过去式:archived过去分词:archived。近义词file英[fau026al]美[fau026al]n. (计算机的)文件;档案;文件夹;卷宗。v. 把(文件等)归档;提起(诉讼);提出(申请);送交(备案);发送(报道给报社)。[例句]Every file on the same disk must have a different name.同一磁盘上的每一个文件都必须有不同的文件名。[其他] 第三人称单数:files复数:files现在分词:filing过去式:filed过去分词:filed。

Hive--对空值和NULL的处理

Hive中默认将NULL存为N,NULL类型的字符串如何检索? 创建一个测试表及准备测试数据,SQL如下: 测试数据如下: 将数据Load到test_null表中显示如下: 如上图所5、6两条数据均显示的为NULL,通过数据我们无法真实的区别那条数据的age真正的为空。 通过指定查询条件可以检索出空值和NULL类型字符串数据 使用is null可以检索出存储为N的数据(即id为6的这条数据) 使用="NULL"可以检索出为NULL字符串的数据(即id为5的这条数据) 1 可以通过建表语句中指定Hive保存和标识NULL,也可以通过alter修改已存在的表,建表指定方式如下: 2 在Hive中是通过serialization.null.format参数来保存和标识NULL,通过将表的该参数修改为NULL表示为空值 1.Hive在对表进行Put和Load数据操作时,Hive是不支持数据类型的校验,在使用insert into table select…方式向表中插入数据时,对于类型异常的数据会在表中插入一个N空的值(N为Hive中默认NULL标识) 2.可以使用serialization.null.format来指定Hive中保存和标识NULL,可以设置为默认的N,也可以为NULL或"" 3.如果表中存在大量的NULL值,则在Hive的数据文件中会产生大量的N数据,浪费存储空间,那我们可以将serialization.null.format设置为""

卸载软件时候点击uninstall.exe出现invalid start mode archive filename怎么办

重新安装软件再卸载

Shiver Me Timbers (Lp Version) 歌词

歌曲名:Shiver Me Timbers (Lp Version)歌手:BETTE MIDLER专辑:Experience The DivineI"m leavin" my fam"lyLeavin" all my friendsMy body"s at homeBut my heart"s in the windWhere the clouds are like headlinesOn a new front page skyMy tears are salt waterAnd the moon"s full and highAnd I know Martin Eden"sGonna be proud of meAnd many before meWho"ve been called by the seaTo be up in the crow"s nestSingin" my sayShiver me Timbers"Cause I"m a-sailin" awayAnd the fog"s liftin"And the sand"s shiftin"I"m driftin" on outOl" Captain AhabHe ain"t got nothin" on me, now.So swallow me, don"t follow meI"m trav"lin" aloneBlue water"s my daughter"n I"m gonna skip like a stoneSo please call my missusGotta tell her not to cry"Cause my goodbye is writtenBy the moon in the skyHey and nobody knows meI can"t fathom my stayin"Shiver me timbers"Cause I"m a-sailin" awayAnd the fog"s liftin"And the sand"s shiftin"I"m driftin" on outOl" Captain AhabHe ain"t got nothin" on meSo come and swallow me, follow meI"m trav"lin" aloneBlue water"s my daughter"n I"m gonna skip like a stoneAnd I"m leavin" my familyLeavin" all my friendsMy body"s at homeBut my heart"s in the windWhere the clouds are like headlinesUpon a new front page skyAnd shiver me timbers"Cause I"m a-sailin" awayhttp://music.baidu.com/song/805643

Shiver Me Timbers (Lp Version) 歌词

歌曲名:Shiver Me Timbers (Lp Version)歌手:BETTE MIDLER专辑:Experience The Divine: Greatest HitsI"m leavin" my fam"lyLeavin" all my friendsMy body"s at homeBut my heart"s in the windWhere the clouds are like headlinesOn a new front page skyMy tears are salt waterAnd the moon"s full and highAnd I know Martin Eden"sGonna be proud of meAnd many before meWho"ve been called by the seaTo be up in the crow"s nestSingin" my sayShiver me Timbers"Cause I"m a-sailin" awayAnd the fog"s liftin"And the sand"s shiftin"I"m driftin" on outOl" Captain AhabHe ain"t got nothin" on me, now.So swallow me, don"t follow meI"m trav"lin" aloneBlue water"s my daughter"n I"m gonna skip like a stoneSo please call my missusGotta tell her not to cry"Cause my goodbye is writtenBy the moon in the skyHey and nobody knows meI can"t fathom my stayin"Shiver me timbers"Cause I"m a-sailin" awayAnd the fog"s liftin"And the sand"s shiftin"I"m driftin" on outOl" Captain AhabHe ain"t got nothin" on meSo come and swallow me, follow meI"m trav"lin" aloneBlue water"s my daughter"n I"m gonna skip like a stoneAnd I"m leavin" my familyLeavin" all my friendsMy body"s at homeBut my heart"s in the windWhere the clouds are like headlinesUpon a new front page skyAnd shiver me timbers"Cause I"m a-sailin" awayhttp://music.baidu.com/song/8458449

Shiver Me Timbers 歌词

歌曲名:Shiver Me Timbers歌手:Tom Waits专辑:The Heart Of Saturday NightI"m leavin" my fam"lyLeavin" all my friendsMy body"s at homeBut my heart"s in the windWhere the clouds are like headlinesOn a new front page skyMy tears are salt waterAnd the moon"s full and highAnd I know Martin Eden"sGonna be proud of meAnd many before meWho"ve been called by the seaTo be up in the crow"s nestSingin" my sayShiver me Timbers"Cause I"m a-sailin" awayAnd the fog"s liftin"And the sand"s shiftin"I"m driftin" on outOl" Captain AhabHe ain"t got nothin" on me, now.So swallow me, don"t follow meI"m trav"lin" aloneBlue water"s my daughter"n I"m gonna skip like a stoneSo please call my missusGotta tell her not to cry"Cause my goodbye is writtenBy the moon in the skyHey and nobody knows meI can"t fathom my stayin"Shiver me timbers"Cause I"m a-sailin" awayAnd the fog"s liftin"And the sand"s shiftin"I"m driftin" on outOl" Captain AhabHe ain"t got nothin" on meSo come and swallow me, follow meI"m trav"lin" aloneBlue water"s my daughter"n I"m gonna skip like a stoneAnd I"m leavin" my familyLeavin" all my friendsMy body"s at homeBut my heart"s in the windWhere the clouds are like headlinesUpon a new front page skyAnd shiver me timbers"Cause I"m a-sailin" awayhttp://music.baidu.com/song/8090090

Shiver Me Timbers 歌词

歌曲名:Shiver Me Timbers歌手:Holly Cole专辑:TemptationI"m leavin" my fam"lyLeavin" all my friendsMy body"s at homeBut my heart"s in the windWhere the clouds are like headlinesOn a new front page skyMy tears are salt waterAnd the moon"s full and highAnd I know Martin Eden"sGonna be proud of meAnd many before meWho"ve been called by the seaTo be up in the crow"s nestSingin" my sayShiver me Timbers"Cause I"m a-sailin" awayAnd the fog"s liftin"And the sand"s shiftin"I"m driftin" on outOl" Captain AhabHe ain"t got nothin" on me, now.So swallow me, don"t follow meI"m trav"lin" aloneBlue water"s my daughter"n I"m gonna skip like a stoneSo please call my missusGotta tell her not to cry"Cause my goodbye is writtenBy the moon in the skyHey and nobody knows meI can"t fathom my stayin"Shiver me timbers"Cause I"m a-sailin" awayAnd the fog"s liftin"And the sand"s shiftin"I"m driftin" on outOl" Captain AhabHe ain"t got nothin" on meSo come and swallow me, follow meI"m trav"lin" aloneBlue water"s my daughter"n I"m gonna skip like a stoneAnd I"m leavin" my familyLeavin" all my friendsMy body"s at homeBut my heart"s in the windWhere the clouds are like headlinesUpon a new front page skyAnd shiver me timbers"Cause I"m a-sailin" awayhttp://music.baidu.com/song/2560628

BLADEZ HIVE-HC1蜂巢式加重背心:提升运动效率的好帮手

运动负重的概念越来越普及,广受训练者和业界推崇,除了讲求有效的方式之外,其时间与效率也是大家越来越在意的事。当训练到某一程度后,原先习惯的器材,即使重量再重,也会变得轻而一举。 BLADEZ HIVE-HC1蜂巢式加重背心 蜂巢式背心,设计最用心 BLADEZ 这个品牌早在1999在北美发迹,最早的合作对象为Walmart及SEARS的健身器材供应商,以提供最适合终端消费者使用的健身产品所受到欢迎,以高CP值著称,集团同时也设计生产健身俱乐部的高耐用器材,并与其他知名品牌代工厂合作,销售到西班牙、墨西哥、英国、波兰等近65个国家。 擅长研发独特又有效健身器材的他们,经过多年的历练与研究,不断蒐集消费者的需求和问题了解;10样不同种的器材选择,还不如一样就能达到高强度的锻炼。因此BLADEZ推出了一件可以缩短运动时间,快速进入运动极限,并可根据训练需求调节重量的蜂巢式加重背心。表面看似一件普通背心,实际是一件能达到高效运动效果的健身配备。不论从事什么运动,如:跑步或健身。只要穿上它,便能马上感觉整体的重量程度被拉高。 不论从事什么运动,如:跑步或健身。只要穿上蜂巢式背心,便能马上感觉整体的重量程度被拉高。 安全舒适,最可靠的负重伙伴 HIVE-HC1蜂巢式加重背心创新的设计符合各种体型且舒适合身,就像一件包覆在上半身的柔软背心,两侧的开放设计和独特的增重方式,不止舒适且无活动角度上限制,提供训练者最好的建身装备,帮助实践更上一层的锻炼目标。 先求帅在求快是许多人心中的首要目标,特殊的裁缝设计和四向高丹数弹性布料,能让加重背心能更服贴在身上,大幅降低负担感,甚至可以将加重背心藏在衬衫内,让运动过程或日常穿戴动作依然顺畅。 HIVE-HC1蜂巢式加重背心的特色 在运动的时候,如果将其直接穿戴在身上,能达到更高的效果。但就如同衣服一样,舒适程度是很重要的选择之一;BLADEZ蜂巢式加重背心严选医疗级亲肤布料,极致肤触温柔包覆肌肤,即使单穿也倍感柔适,特殊腰侧开窗设计能加速排汗体感降温,在运动过程中维持干爽舒适,绑带式调整,根据各种体型可自由调节松紧度,让使用范围更广,即使身材变壮仍然能继续使用。 看似一件薄薄的背心,其重量从何而来?以小单位70g铁块为单位,放置于背心表面的格子内,重量可根据个人需求调整,最大可加至22.8KG(XL),此外,同一蜂槽格内可以放置两个重量块,不影响使用者姿势,避免造成运动伤害。 不过从事动态活动,或是静态的重量训练;蜂巢式背心服贴设计让重量块紧贴在身上,织带承载着铁块重量,使运动过程中铁块不晃动,降低掉落、撞击机率;与身体接触紧密,让运动过程中不易勾到其他东西,更符合长远锻炼计划。 HIVE-HC1蜂巢式加重背心铁块放置实图 HIVE-HC1加重背心训练方法 加重背心是直接负重在身上,不像器材需要手持,更偏重在整体性的发展,例如敏捷性、爆发力、心肺功能及核心肌群,使用加重背心来做训练,更能全面提升运动强度,还可以协助你突破原先的瓶颈;当运动强度提升,更加强化燃烧脂肪的效率!如: 1 各式徒手训练 常见的徒手训练,如:伏地挺身、徒手深蹲、仰卧起坐(卷腹)、棒式等等,都可以使用加重背心来提高运动成效。 2 其余训练(辅助) 加重背心紧贴于身上,且方便各式活动,因此球类运动或部分训练,也可同步使用加重背心作为加强训练,提升运动表现。 3 复健(恢复) 增加负重后,可在降低运动强度的状况下,维持相同的能量消耗、肌肉施力等,让运动过程更安全。例如:增加负重后,跑步速度可降低,也能达到相同的运动强度,对老年人或有受伤的人来说,速度降低较为安全,但运动强度仍能保持一定水准。 4 日常生活(提高热量消耗) 贴身舒适的设计可隐藏于衣服内,因此日常活动中可随时穿着,以提高能量消耗,达到减脂瘦身的目的。 由BLADEZ独家研发,台湾制造的HIVE-HC1蜂巢式加重背心,M号售价为4280元,另有L号售价$4680和XL号售价$5480。不论是增加肌耐力还是减少脂肪,加重背心都能让你事半功倍,能有效提升能量代谢的效率与心肺等生理能力。搭配背心的好处就是因为额外的重量让训练的效果更加乘,能在较短的时间内达到的你的训练目标值,不仅节省了你的训练时间,也能让你的肌耐力及心肺功能有所突破!想要提升训练的强度与效果吗?不妨来件加重背心试看看吧! BLADEZ HIVE-HC1蜂巢式加重背心 材质 95%Polyester/5%Nylon/铁 产地 蜂巢式加重背心-台湾  加重铁块组-台湾 保固 蜂巢式加重背心-七天 加重铁块组-七天 ※注 附赠HIVE配件-加重铁块组64入,如需另外购买HIVE配件-加重铁块组,购买请洽官网。 建议售价 M号:4280元/L号:4680/XL号:5480 产品购买,请洽:BLADEZ 横线部份为医疗等级亲肤布料

「Hive进阶篇」详解存储格式及压缩方式

hive优化除了有hql语句逻辑优化,hql参数调优等等,还有一个不起眼的细节容易被忽视掉, 那便是hive数仓模型表的存储格式和压缩方式 ,hive底层数据是依托在hadoop,以HDFS文件存储在集群上的, hive数仓模型表选择一个合适的存储格式和压缩方式也是hive优化的一点 。 本篇就来聊一聊这块知识点吧。U0001f604 hive主要有textfile、sequencefile、orc、parquet 这四种存储格式,其中sequencefile很少使用,常见的主要就是orc和parquet这两种,往往也搭配着压缩方式合理使用。 建表声明语句是: stored as textfile/orc/parquet 行式存储,这是hive表的默认存储格式,默认不做数据压缩,磁盘开销大,数据解析开销大,数据不支持分片(即代表着会带来无法对数据进行并行操作) 行列式存储,将数据按行分块,每个块按列存储,其中每个块都存储着一个索引,支持none和zlib和snappy这3种压缩方式,默认采用zlib压缩方式,不支持切片,orc存储格式能提高hive表的读取写入和处理的性能。 列式存储,是一个面向列的二进制文件格式(不可直接读取),文件中包含数据和元数据,所以该存储格式是自解析的,在大型查询时效率很快高效,parquet主要用在存储多层嵌套式数据上提供良好的性能支持,默认采用uncompressed不压缩方式。 行存储引擎 :同一条数据的不同字段都在相邻位置,所以当要查找某一条记录所有数据时行存储查询速度比较快 列存储引擎 :以列来聚集数据,相同字段的值聚集在一起,所以当查询某一个指定列的所有数据时,列存储查询速度比较快 hive主要支持gzip、zlib、snappy、lzo 这四种压缩方式。 压缩不会改变元数据的分割性,即压缩后原来的值不变。 建表声明语句是: tblproperties("orc.compress"="SNAPPY") 压缩方式的评判标准主要有以下几点: 针对压缩方式做一个小结对比:

5种让Hive查询变快的方法

在过去几年中,主要受到围绕Stinger计划的Hive社区创新的推动,Hive查询时间得到了显着改善,使Hive能够以速度和规模支持批量和交互式工作负载。 但是,许多使用者仍然不熟悉以最快速度运行Hive查询的基本技术和最佳实践。本文中,将重点介绍一些常使用的简单技术,以提高HIVE查询的性能。 Hive可以使用Apache Tez执行引擎而不是Map-reduce引擎。不会详细介绍这里提到的使用Tez的许多好处; 相反,提出一个简单的建议:如果在您的环境中默认情况下没有打开它,请在Hive查询的开头使用Tez设置为“true” Hive支持ORCfile,这是一种新的表存储格式,通过谓词下推,压缩等技术实现极佳的速度提升。 对每个HIVE表使用ORCFile应该是一个明智的选择,对于获得HIVE查询的快速响应时间非常有益。 作为一个例子,考虑两个大表A和B(存储为文本文件,这里没有指定一些列),以及一个简单的查询 : 此查询可能需要很长时间才能执行,因为表A和B都存储为TEXT。将这些表转换为ORCFile格式通常会显着缩短查询时间: ORC支持压缩存储(使用ZLIB或如上所示使用SNAPPY),但也支持未压缩存储。 将基表转换为ORC通常是取决于所在团队获取数据的职责,由于其他优先级,可能需要一些时间来更改完整的获取数据过程。ORCFile的好处是如此明显,以至于推荐如上所示的自助式方法 - 将A转换为A_ORC,将B转换为B_ORC并以此方式进行连接,以便立即从更快的查询中受益,而不依赖于其他团队。 矢量化查询执行通过一次批量执行1024行而不是每行一行来提高扫描,聚合,过滤器和连接等操作的性能。 这个功能在Hive 0.13中引入,显着缩短了查询执行时间,并且可以通过两个参数设置轻松启用: 在提交最终执行之前,Hive会优化每个查询的逻辑和物理执行计划。这些优化不是基于查询的成本 - 也就是说,直到运行时。 最近添加到Hive,基于成本的优化,基于查询成本执行进一步优化,从而导致可能不同的决策:如何订购联接,执行哪种类型的联接,并行度等。 要使用基于成本的优化(也称为CBO),请在查询开头设置以下参数 然后,通过运行Hive的“analyze”命令为CBO准备数据,以收集我们想要使用CBO的表的各种统计信息。 例如,在tweet数据表中,希望收集有关该表的统计信息以及大约2列:“sender”和“topic”: 使用HIVE 0.14(在HDP 2.2上),analyze命令的工作速度要快得多,而且您不需要指定每一列,因此只需如下: 现在使用此表执行查询应该会导致不同的执行计划由于成本计算和Hive创建的不同执行计划而更快。 SQL是一种强大的声明性语言。与其他声明性语言一样,编写SQL语句的方法不止一种。尽管每个语句的功能都相同,但它可能具有截然不同的性能特征 每条记录代表一次点击事件,希望找到每个sessionID的最新网址。 有人使用如下方式: 在上面的查询中,构建一个子查询来收集每个会话中最新事件的时间戳,然后使用内部联接来过滤掉其余的事件。 虽然查询是一个合理的解决方案 - 从功能的角度来看 - 事实证明,有一种更好的方法来重写这个查询,如下所示 在这里,使用Hive的OLAP功能(OVER和RANK)来实现相同的功能,但没有使用表连接。 显然,删除不必要的连接几乎总能带来更好的性能,而且当使用大数据时,这比以往任何时候都更重要。在很多情况下查询不是最优的 - 所以仔细查看每个查询并考虑重写是否可以使它更好更快。 更多内容信息 https://blue-shadow.top

hive和mysql的区别是什么?

hive和mysql的区别有:1、查询语言不同:hive是hql语言,mysql是sql语句;2、数据存储位置不同:hive是把数据存储在hdfs上,而mysql数据是存储在自己的系统中;3、数据格式:hive数据格式可以用户自定义,mysql有自己的系统定义格式;4、数据更新:hive不支持数据更新,只可以读,不可以写,而sql支持数据更新;5、索引:hive没有索引,因此查询数据的时候是通过mapreduce很暴力的把数据都查询一遍,也造成了hive查询数据速度很慢的原因,而mysql有索引。

[hive]一种基于Hive日志分析的大数据存储优化方法_王正也_百度文库

一种基于Hive日志分析的大数据存储优化方法 王正也 百度文库 http://wenku.baidu.com/link?url=jgtZ12wnPIZnLt19464bsVsMbfxQoFS8cUeY2jNgR6m-5PHNPEAQqTib4laQTIOiQ4pBaEMxLg0kwl1KLWgnmFxgu05Mbj4lsg9bzJd6SPG 2 一种基于Hive日志的大数据存储优化方法 2.1 优化方法概述 Hive作为Hadoop开源分布式平台下的数据仓库工具,他的作用是HDFS上存储的结构化数据,根据使用者的需求将其映射出数据表,并可以向用户提供类似SQL的HiveQL查询功能,并将用户提交的Query转换成Map-Reduce任务执行。Hive的优点是提供类SQL的查询接口,快速实现数据的统计分析功能,而不必编写专用的Map-Reduce任务。而也正是因为如此,通用的Hive数据仓库,没有进行专用化的优化设计,其查询分析效率也有很大的优化空间[4]。 文章根据常用的HiveQL的查询日志分析和根据现有的数据存储结构的关联特性提出一种通用的Hive数据存储的优化方法。 本策略认为优化一个专用的Hive海量数据仓库分为以下几个步骤: 1. 分析常用查询日志,根据使用人员习惯定制数据分区结构。 2. 使用专用的优化过的列式存储结构作为数据导入格式。 3. 根据数据表,和表中字段的实际物理意义合并压缩重复字段和数据表。 4. 根据数据表中字段实际的取值优化字段的存储类型。 5. 编写UDF,在不改变用户使用习惯的基础上,应用上述优化。 其中1.2.两点在数据导入阶段进行优化,3.4.5.是在对数据表字段和表结构的优化,需要配合UDF来进行。通过上述优化过程可以大大节省HiveQL的查询时间以及HDFS上数据的占用空间。 2.2 根据查询日志进行分区优化 Hive的日志记录了Hive的运行状况,为本文分析操作者的使用习惯提供了很大的帮助。可以通过编写Hive的EXPAIN功能进行日志的分析,利用Hive的EXPLAIN功能,本文可以得到查询语句的抽象语法树(ABSTRACT SYNTAX TREE),通过抽象语法树,本文可以快速得到查询语句的语法结构。 例如,以下一条语句SELECT col1, SUM(col2) FROM tab1 GROUP BY col1的通过EXPLAIN命令本文可以得到如下结果: ABSTRACT SYNTAX TREE: (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME tab1))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_TABLE_OR_COL col1)) (TOK_SELEXPR (TOK_FUNCTION sum (TOK_TABLE_OR_COL col2)))) (TOK_GROUPBY (TOK_TABLE_OR_COL col1)))) 可以通过使用正则表达式抓取特征数据,得到该语句的语法结构,同时通过编写Shell脚本,批量执行EXPLAIN命令,可以很快的理解到使用者的常用语法习惯,为后文的分区优化提供了数据支持。 通过对使用者常用字段进行分区(partition),带来的便利是大大的节省了一些常用查询的在硬盘中读取数据所消耗的时间。 通常在没有进行过优化的Hive系统中,每次查询提交之后,Hive要对输入数据进行全盘扫描满足条件的的项目,通过合理的划分分区,在单次任务提交后,可以按照任务的限定条件只扫描某些关键分区的数据,大大提高的Hive查询执行的效率。 2.3 选取合适的Hive数据存储格式 在Hive中数据表创建时需要指定文件存储格式,在Hive0.90版本中,常用的数据格式分为TEXTFILE、SEQUNCEFILE、RCFILE和用户自定格式等几种,以上格式的主要区别在行式存储与列式存储,不同压缩算法等方面的区别。根据Hive数据表格的特性,和通过Hive日志观察到的用户使用习惯等特性,通过选择合适的文件存储格式,可以大大提高查询效率,减少查询耗费时间。 4 结论 本文给出了一种基于Hive日志分析的大数据存储优化方法,通过实际测试可以看出,使用该优化方法的Hive数据存储系统无论从磁盘空间利用率还是从查询效率上都得到和很大提升。

inceptor、hive遇到的问题

1.创建表 create table if not exists text (sid int ,sname String); 2.插入数据时报错: insert into text values (1,"zhangsan"); [42000][10797] COMPILE FAILED: Semantic error: [Error 10797] Only allow to single insert into Hyperbase/ES/Transaction Orc, other data destination not allowed 意思是使用insert into 方式插入数据只能是orc事务表,其他类型的源数据是不被允许的 3.网上查找解决方式是这样创建表: create table if not exists text (sid int ,sname String) row format delimited fields terminated by "," stored as ORC; 使用这种方式创建表后还是报同样的错误 4.加个分桶解决问题 SET transaction.type=inceptor; CREATE TABLE ta (name STRING,age INT)CLUSTERED BY (age)INTO 2 BUCKETS STORED AS ORC TBLPROPERTIES ("transactional"="true");

如何在hadoop下连接hive

通过JDBC连接或是HiveConf conf = new HiveConf(); conf.addResource(new Path("file:///usr/local/apache-hive-0.13.1-bin/conf/hive-site.xml")); conf.addResource(new Path("file:///usr/local/apache-hive-0.13.1-bin/conf/hive-default.xml.template")); conf.set("javax.jdo.option.ConnectionURL", "jdbc:mysql://127.0.0.1:3306/hive?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=utf-8"); conf.set("hive.metastore.local", "true"); conf.set("javax.jdo.option.ConnectionDriverName","com.mysql.jdbc.Driver"); conf.set("javax.jdo.option.ConnectionUserName", "hive"); conf.set("javax.jdo.option.ConnectionPassword", "hive"); conf.set("hive.stats.dbclass", "jdbc:mysql"); conf.set("hive.stats.jdbcdriver", "com.mysql.jdbc.Driver"); conf.set("hive.exec.dynamic.partition.mode", "nonstrict");set进去你所想加入或是想设置的hive参数

大数据之-HIVE入门(二十一)

percentile( BIGINT col,p) :p为0-1之间的数,如0.75 代表,取在整个样本中75%分位的数据值。 percentile( BIGINT col,array(p1,p2)): array(p1,p2) 同时取整个样本中多个百分位的数据值。 percentile_approx(col,p,B) :B为精度,默认10000。其中p也可以为array类型,同中位数函数用法一样。

hive基础调优方法(一)

1.查看执行计划:Explain 查看执行计划:explain select kind, count(*) from table_name group by kind 常见名词示意: STAGE DEPENDENCIES:阶段的依赖关系 FETCH Operator :抓取操作 limit: -1 未对数据做限制 TableScan:扫描的表 alias:查询的表名 Select Operator:查询操作 expressions:查询的列名 outputColumnNames:输出的别名 详细执行计划:explain extended select kind, count(*) from table_name group by kind 2.分区表:分区对应不同文件夹。 查询时用where语句可以指定分区目录dt="20211112"。 建表时用partitioned by(dt string)。 加载时需要指定分区信息 into table partition_table partition(dt="20211112")。 增加分区alter partition_table add partition(dt="20211122")。 删除分区alter partition_table drop partition(dt="20211122")。 可同时增加或删除多个,增加只需空格,删除中间需要逗号隔开。 查看分区 show partitions partition_table; 分区字段可以指定多个。 3.动态分区: 动态分区:set hive.exec.dynamic.partition=true; 非严格状态:set hive.exec.dynamic.partition.mode=nonstrict; 最大可创建动态分区:set hive.exec.max.dynamic.partitions=1000; 单个MR最大可创建动态分区:set hive.exec.max.dynamic.partitions.pernode=100 MR Job 中,最大可以创建多少个 HDFS 文件:set hive.exec.max.created.files=100000 空分区时否需要抛出异常:set hive.error.on.empty.partition=false 4.分桶表:将数据放到不同的文件 创建表clustered by(id) 用于抽样tablesample(bucket 1 out of 4 on id); 5.文件存储和压缩格式 行存储TEXTFILE、SEQUENCEFILE 列存储ORC、PARQUET LZO和SNAPPY有优秀的压缩比和压缩速度 6.裁剪 列裁剪,只读取需要的列 分区裁剪,只读取需要的分区 7.group by数据倾斜 Map端进行聚合:set hive.map.aggr = true; Map端进行聚合操作的条目数目 set hive.groupby.mapaggr.checkinterval = 100000; 有数据倾斜的时候进行负载均衡:set hive.groupby.skewindata = true; 8.矢量计算,可以在似scan, filter, aggregation进行批量处理 set hive.vectorized.execution.enabled = true; set hive.vectorized.execution.reduce.enabled = true; 9.left semi join用来替代exist/in 10.CBO优化 成本优化器 set hive.cbo.enable=true; set hive.compute.query.using.stats=true; set hive.stats.fetch.column.stats=true; set hive.stats.fetch.partition.stats=true; 11.谓词下推 set hive.optimize.ppd = true; 12.mapjoin:大表left join小表 set hive.auto.convert.join=true; set hive.mapjoin.smalltable.filesize=25000000; 13.大表和大表join(极少用到) Sort Merge Bucket Join 建表时 clustered by(id) sorted by(id) into 3 buckets 开启桶join set hive.optimize.bucketmapjoin = true; set hive.optimize.bucketmapjoin.sortedmerge = true; set hive.input.format=org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; 14.笛卡尔积 hive.mapred.mode=strict;开启后不会出现笛卡尔积

数据仓库Hive

一个公司里面不同项目可能用到不同的数据源,有的存在MySQL里面,又的存在MongoDB里面,甚至还有些要做第三方数据。 但是现在又想把数据整合起来,进行 数据分析 。此时数据仓库(Data Warehouse,DW)就派上用场了。它可以对多种业务数据进行筛选和整合,可以用于数据分析、数据挖掘、数据报表。 总的来说,数据仓库是将多个数据源的数据按照一定的 主题 集成起来,因为之前的数据各不相同,所以需要 抽取、清洗、转换 。 整合以后的数据不允许随便修改,只能分析,还需要定期更新。 上面我们说过,数据仓库接收的数据源是不同的,要做集成的话,需要 抽取、清洗、转换 三个步骤,这就是 ETL (Extract-Transform-Load) 国内最常用的是一款基于Hadoop的开源数据仓库,名为 Hive ,它可以对存储在 HDFS 的文件数据进行 查询、分析 。 Hive对外可以提供HiveQL,这是类似于SQL语言的一种查询语言。在查询时可以将HiveQL语句转换为 MapReduce 任务,在Hadoop层进行执行。 Hive的最大优势在于 免费 ,那其他知名的商业数据仓库有那些呢?比如Oracle,DB2,其中业界老大是 Teradata Teradata数据仓库支持大规模并行处理平台(MPP),可以高速处理海量实际上,性能远远高于Hive。对企业来说,只需要专注于业务,节省管理技术方面的精力,实现ROI(投资回报率)最大化。 上面提到了Hive是最著名的开源数据仓库,它是Hadoop生态中一个重要的组件。 Hadoop的生态中,HDFS解决了分布式存储的问题,MapReduce解决了分布式计算的问题,而HBASE则提供了一种NoSQL的存储方法。 但是如果需要的HDFS上的文件或者HBASE的表进行查询,需要自定义MapReduce方法。那么Hive其实就是在HDFS上面的一个中间层,它可以让业务人员直接使用SQL进行查询。 所以Hive是用进行数据提取转换加载的,而且它可以把SQL转换为MapReduce任务,而Hive的表就是HDFS的目录或者文件。 上图为Hive的体系结构 Hive主要包含以下几种数据模型: 本文为 什么是数据仓库? 的笔记

hive的Hive常用优化方法

1、join连接时的优化:当三个或多个以上的表进行join操作时,如果每个on使用相同的字段连接时只会产生一个mapreduce。2、join连接时的优化:当多个表进行查询时,从左到右表的大小顺序应该是从小到大。原因:hive在对每行记录操作时会把其他表先缓存起来,直到扫描最后的表进行计算3、在where字句中增加分区过滤器。4、当可以使用left semi join 语法时不要使用inner join,前者效率更高。原因:对于左表中指定的一条记录,一旦在右表中找到立即停止扫描。5、如果所有表中有一张表足够小,则可置于内存中,这样在和其他表进行连接的时候就能完成匹配,省略掉reduce过程。设置属性即可实现,set hive.auto.covert.join=true; 用户可以配置希望被优化的小表的大小 set hive.mapjoin.smalltable.size=2500000; 如果需要使用这两个配置可置入$HOME/.hiverc文件中。6、同一种数据的多种处理:从一个数据源产生的多个数据聚合,无需每次聚合都需要重新扫描一次。例如:insert overwrite table student select * from employee; insert overwrite table person select * from employee;可以优化成:from employee insert overwrite table student select * insert overwrite table person select *7、limit调优:limit语句通常是执行整个语句后返回部分结果。set hive.limit.optimize.enable=true;8、开启并发执行。某个job任务中可能包含众多的阶段,其中某些阶段没有依赖关系可以并发执行,开启并发执行后job任务可以更快的完成。设置属性:set hive.exec.parallel=true;9、hive提供的严格模式,禁止3种情况下的查询模式。a:当表为分区表时,where字句后没有分区字段和限制时,不允许执行。b:当使用order by语句时,必须使用limit字段,因为order by 只会产生一个reduce任务。c:限制笛卡尔积的查询。10、合理的设置map和reduce数量。11、jvm重用。可在hadoop的mapred-site.xml中设置jvm被重用的次数。

hive的数据存储在哪里

Hive日志默认存储在什么位置1、重要的hive日志配置property.hive.log.level决定了hive的日志级别,property.hive.log.dir决定了hive的日志存储路径,默认存储在/tmp/user.name/hive.log文件。2、其次,Hive中所有的数据都存储在HDFS中,Hive中包含以下数据模型:表(Table),外部表(ExternalTable),分区(Partition),桶(Bucket)。3、Hive的元数据存储在RDBMS中,一般常用MySQL和Derby。默认情况下,Hive元数据保存在内嵌的Derby数据库中,只能允许一个会话连接,只适合简单的测试。4、说明:hive的表存放位置模式是由hive-site.xml当中的一个属性指定的,默认是存放在该配置文件设置的路径下,也可在创建数据库时单独指定存储路径。5、tarzvxfsqoop-bin__hadoop-0.0.tar.gz下载合适的JDBC驱动,将下载的JDBC的驱动放到Sqoop的lib文件夹下。hive工作时,数据是存储在mysql还是hdfshive是把数据存储在hdfs上,而mysql数据是存储在自己的系统中;数据格式不同:hive数据格式可以用户自定义,mysql有自己的系统定义格式;数据更新不同:hive不支持数据更新,只可以读,不可以写,而sql支持数据更新。其次,Hive中所有的数据都存储在HDFS中,Hive中包含以下数据模型:表(Table),外部表(ExternalTable),分区(Partition),桶(Bucket)。第hive本身是不存储数据的,不论外表、内表,hive的所有数据是存放在hdfs文件系统的。hive表数据是在hdfs中储存的并没有固定的储存格式,hive只保存管理表元数据。国内最常用的是一款基于Hadoop的开源数据仓库,名为Hive,它可以对存储在HDFS的文件数据进行查询、分析。Hive对外可以提供HiveQL,这是类似于SQL语言的一种查询语言。hive能存储数据吗1、首先,Hive没有专门的数据存储格式,也没有为数据建立索引,用户可以非常自由的组织Hive中的表,只需要在创建表的时候告诉Hive数据中的列分隔符和行分隔符,Hive就可以解析数据。2、第hive本身是不存储数据的,不论外表、内表,hive的所有数据是存放在hdfs文件系统的。3、hadoop是一个分布式的软件处理框架,hive是一个提供了查询功能的数据仓库,而hadoop底层的hdfs为hive提供了数据存储。hive将用户提交的SQL解析成mapreduce任务供hadoop直接运行,结合两者的优势,进行数据决策。4、国内最常用的是一款基于Hadoop的开源数据仓库,名为Hive,它可以对存储在HDFS的文件数据进行查询、分析。Hive对外可以提供HiveQL,这是类似于SQL语言的一种查询语言。5、Pig与HIVE工具类似,都可以用类sql语言对数据进行处理。但是他们应用场景有区别,Pig用于数据仓库数据的ETL,HIVE用于数仓数据分析。hive和mysql的区别是什么?当然不是,hive支持jdbc和odbc数据源连接,可以连接很多种数据库,mysql、oracle等等等等,它自己的metastore用的就是derbyDB。首选在编译安装MySQL的时候指定两个参数使用utf8编码。次选在配置文件my.cnf或my.ini设定两个参数,同时设置init_connect参数。第三在配置文件my.cnf或my.ini设定两个参数,同时客户端的连接指定setnames命令。全不同应用场景吧,HBase速度比Hive快了不知道多少。HBase是非关系型数据库(KV型),对key做索引,查询速度非常快(相比较Hive),适合实时查询;而Hive是关系型数据结构,适合做后期数据分析。

Hive 动态分区

Hive的insert语句能够从查询语句中获取数据,并同时将数据Load到目标表中。现在假定有一个已有数据的表staged_employees(雇员信息全量表),所属国家cnty和所属州st是该表的两个属性,我们做个试验将该表中的数据查询出来插入到另一个表employees中。 由于使用了OVERWRITE关键字,目标表中原来相同partition中的所有数据被覆盖,如果目标表中没有partition,则整个表会被覆盖。 如果把OVERWRITE关键字删掉,或者替换成INTO,则hive会追加而不是替代原分区或原表中的数据,这个特性在Hive v0.8.0之后才支持。 当数据已经存在于hdfs上但不是我们想要的格式的时候,当进行的计算需要分好多步骤有必要存储中间数据的时候,或者原数据没有分区、有很多无效列需要过滤的时候,可以使用insert..select句型来完成这一转换过程。 由于一个国家有很多个省份,如果想根据(国家country,地区partition)两个维度对数据进行分区的话,这条SQL语句的执行个数应该等于地区的数目,比如中国有23个省就要对该SQL语句执行23次。因此hive对这个SQL语句进行了改造,只需要扫描一次原表就可以生成不同的输出(多路输出)。比如下面的SQL语句扫描了一次原始数据表,但是同时生成了3个省份的结果数据: 通过缩进可以很清楚的看到,我们扫描了一次staged_employees表但是执行了3次不同的insert语句,这条大SQL语句是这么执行的:先通过from staged_employees表获取一条记录,然后执行每一个select子句,如果select子句验证通过则执行相应的insert语句。注意这里的三条select子句是完全独立执行的,并不是if .. then .. else的关系,这就意味着这3条select子句在某种情况下可能同时通过where检测。 通过这种结构,原始表的数据能被拆分到目标表的不同partition中去。 如果原表的一条记录满足于其中一个给定的select .. where .. 子句,则该记录将被写到目标表的固定分区中。其实更进一步,每条Insert语句能将数据写到不同的数据表中,不管这个表是否分区都一样。 于是,就像一个过滤器一样,原表的一些数据被写到了很多输出地址,而剩下的数据会被丢弃。 当然,你也可以混用Insert overwrite和insert into两种不同的方法写出数据。 向动态分区插入数据 但是问题还是没有解决,中国有23个省,那么我们就需要写23个insert into .. select ..where子句,这非常不现实。于是hive的一种叫做动态分区的特性就出现了,它能够根据select出来的参数自动推断将数据插入到那个分区中去。本文上面的两种SQL语句设定分区的方式都叫做静态分区插入。 将上一个SQL语句进行改动,会得到以下简洁的新SQL语句: hive先获取select的最后两个位置的se.cnty和se.st参数值,然后将这两个值填写到Insert语句partition中的两个country和state变量中,即动态分区是通过位置来对应分区值的。原始表select出来的值和输出partition的值的关系仅仅是通过位置来确定的,和名字并没有关系,比如这里se.cnty和county的名称完全没有关系。 上面的这条SQL语句是对两个分区同时进行了动态设定,如果staged_employees表中有100个国家,每个国家有100个地区,那么该SQL语句自动对每个国家和地区建立相应的partition并插入数据,如果用手写的话不现实。 只要位置正确,你可以混用动态分区和静态分区值设定,比如下面这个例子,你可以静态指定一个country值,但是state值采用动态的方法设定: 注意:静态分区值必须在动态分区值的前面! 使用hive动态分区的参数设定 动态分区功能默认是关闭的,而当它是打开状态时,默认会工作在“strict”模式下,这种模式下要求至少指定一个静态分区的值。这样做是为了防止设计了大量partition的糟糕情况,举个例子你使用时间戳来进行分区,竟然每一秒钟都产生一个分区!还有其他的一些属性设定用来限制类似的情况出现,如下表所示: 名称 默认值 描述 hive.exec.dynamic.partition false 设置为true用于打开动态分区功能 hive.exec.dynamic.partition.mode strict 设置为nonstrict能够让所有的分区都动态被设定,否则的话至少需要指定一个分区值 hive.exec.max.dynamic.partitions.pernode 100 能被每个mapper或者reducer创建的最大动态分区的数目,如果一个mappre或者reducer试图创建多余这个值的动态分区数目,会引发错误 hive.exec.max.dynamic.partitions +1000 被一条带有动态分区的SQL语句所能创建的动态分区总量,如果超出限制会报出错误 hive.exec.max.created.files 100000 全局能被创建文件数目的最大值,专门有一个hadoop计数器来跟踪该值,如果超出会报错 举个例子,使用全动态分区的SQL语句序列如下所示,需要先设定一些必要的参数才可以: 总结 使用from .. insert.. select ..where结构能够从一个数据表中抽取数据,将结果插入到不同的表和分区中,而使用动态分区能够让hive根据select最末几个位置的值自动设定目标分区的值,使用动态分区需要设定一些hive运行参数。 转自 http://www.crazyant.net/1197.html

hive内置函数有哪些

hive内置函数有:1、在HIVE会话中add自定义函数的jar文件,然后创建function,继而使用函数。2、在进入HIVE会话之前先自动执行创建function,不用用户手工创建。3、把自定义的函数写到系统函数中,使之成为HIVE的一个默认函数。关系函数等值比较:=,语法:A=B。如果表达式A与表达式B相等,则为TRUE;否则为FALSE。不等值比较:<>,语法:A<>B。如果表达式A为NULL,或者表达式B为NULL,返回NULL;如果表达式A与表达式B不相等,则为TRUE;否则为FALSE。小于比较:<,语法:A<B。如果表达式A为NULL,或者表达式B为NULL,返回NULL;如果表达式A小于表达式B,则为TRUE;否则为FALSE。小于等于比较:<=,语法:A<=B。如果表达式A为NULL,或者表达式B为NULL,返回NULL;如果表达式A小于或者等于表达式B,则为TRUE;否则为FALSE。大于等于比较:>=,语法:A>=B。如果表达式A为NULL,或者表达式B为NULL,返回NULL;如果表达式A大于或者等于表达式B,则为TRUE;否则为FALSE。语法:A[NOT]LIKEB。如果字符串A或者字符串B为NULL,则返回NULL;如果字符串A符合表达式B的正则语法,则为TRUE;否则为FALSE。

hive 数据类型

由于在实际项目中使用,这里主要讲一下数值型 1、TINYINT 2、SMALLINT 3、INT/INTEGER 4、BIGINT 5、FLOAT 6、DOUBLE 7、DECIMAL hive 数值型主要是以上7种组成。 这里主要讲一下Double 和Decimal 对于小数的显示,我在项目中考虑用Double还是Decimal,由于Double 不如Decimal精确,而且在数字过长的时候会有科学技术法表示,所以这块用的是Decimal去做的。 用的时候也出现过问题。Decmal的用法如下 Decimal(precision, scale) precision 表示的是长度 scale 表示 小数位数 比如 -99.99 表示precision为4 (注意 正负号不包括在内) scale 为2 之前我以为是总体20位,小数有2位那么 整数就能有18位了 ,其实不是这样子,举个例子。一个小数333.07 导入表 而建立一个Decimal(20,17) 的话 便可以顺利导入

hive的Hive 体系结构

主要分为以下几个部分:用户接口用户接口主要有三个:CLI,Client 和 WUI。其中最常用的是 CLI,Cli 启动的时候,会同时启动一个 Hive 副本。Client 是 Hive 的客户端,用户连接至 Hive Server。在启动 Client 模式的时候,需要指出 Hive Server 所在节点,并且在该节点启动 Hive Server。 WUI 是通过浏览器访问 Hive。元数据存储Hive 将元数据存储在数据库中,如 mysql、derby。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。解释器、编译器、优化器、执行器解释器、编译器、优化器完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在 HDFS 中,并在随后由 MapReduce 调用执行。HadoopHive 的数据存储在 HDFS 中,大部分的查询由 MapReduce 完成(包含 * 的查询,比如 select * from tbl 不会生成 MapReduce 任务)。

Hive支持的数据类型

#整型 TINYINT — 微整型,只占用1个字节,只能存储0-255的整数。 SMALLINT– 小整型,占用2个字节,存储范围–32768 到 32767。 INT– 整型,占用4个字节,存储范围-2147483648到2147483647。 BIGINT– 长整型,占用8个字节,存储范围-2^63到2^63-1。 #布尔型 BOOLEAN — TRUE/FALSE #浮点型 FLOAT– 单精度浮点数。 DOUBLE– 双精度浮点数。 #字符串型 STRING– 不设定长度。 Structs:一组由任意数据类型组成的结构。比如,定义一个字段C的类型为STRUCT {a INT; b STRING},则可以使用a和C.b来获取其中的元素值; Maps:和Java中的Map相同,即存储K-V对的; Arrays:数组; 复杂数据类型的声明必须使用尖括号指明其中数据字段的类型。定义三列,每列对应一种复杂的数据类型,如下所示。 TEXTFILE //文本,默认值 SEQUENCEFILE // 二进制序列文件 RCFILE //列式存储格式文件 Hive0.6以后开始支持 ORC //列式存储格式文件,比RCFILE有更高的压缩比和读写效率,Hive0.11以后开始支持 PARQUET //列出存储格式文件,Hive0.13以后开始支持 #参考博客: http://lxw1234.com/archives/2015/06/238.htm http://www.cnblogs.com/zlslch/p/5659714.html https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types #

Hive分区的作用

如果没有分区的存在,那么每次查询Hive将会进行全表扫描。对于小数据量的表来说,全表扫描并不会慢到无法忍受,但是对于大数据量来讲,比如几年的数据,每次查询都要扫描几年的所有数据,除了浪费时间之外,还浪费集群资源。为了改进这一问题,分区的价值就体现出来了。对于几年的数据,在设计Hive表的时候,可以将时间设计为分区字段,至于时间维度细到怎样的颗粒度,以业务需求为准。就这样,分区的存在,极大的缩小了数据的查询范围,比如以天为单位的分区字段,在查询2020年3月份的相关数据时,只需限制分区字段的时间在2020-03-01~2020-03-31之间,Hive就会根据分区字段条件直接找到几年数据中归属2020年3月份的数据,然后在对2020年3月份的数据根据具体的逻辑进行处理即可,而不需要几年的数据全部都扫描一次。 区别: 1.静态分区是需要指定分区的(源数据中没有) 2.动态分区是利用数据中的字段坐分区的,(源数据中有的),U0001f232 主分区动态分区,次分区静态分区,使得每个主分区下面都要创建静态分区 不难看出,Hive分区,主要是以缩小数据查询范围,提高查询速度和性能的。 Hive的静态分区,实际上就是手动指定分区的值为静态值,这种对于小批量的分区插入比较友好 语句中partition(year=“2020”, month=“04”, day=“2020-04-10”, hour=“22”) 的年月日小时手动指定了具体的值,这样的分区就叫静态分区了,是不是很简单? Hive的动态分区,其实就是把静态分区中的分区值设置为动态的值,就可以了,来看看动态分区相关的HQL 语句中partition(year=year, month=month, day=day, hour=hour)会根据具体值的变化而变化,无需手动指定,这对于大批量的分区插入是一个很方便的用法,但需要根据业务需求衡量分区数量是否合理的问题。毕竟分区会占用IO资源,数量越多,IO资源消耗越大,查询时间和性能都是有所损耗的。 在创建动态分区时,经常遇到自动插入分区失败的问题,通过日志分析,可以知道,一种是没有开启动态分区模式,一种是严格模式导致的动态分区插入失败,一种是默认分区数量不足导致的分区插入失败。我们来了解一下,与动态分区相关的一些参数,以便更好的使用。 -- Hive默认配置值 -- 开启或关闭动态分区 hive.exec.dynamic.partition=false; -- 设置为nonstrict模式,让所有分区都动态配置,否则至少需要指定一个分区值 hive.exec.dynamic.partition.mode=strict; -- 能被mapper或reducer创建的最大动态分区数,超出而报错 hive.exec.max.dynamic.partitions.pernode=100; -- 一条带有动态分区SQL语句所能创建的最大动态分区总数,超过则报错 hive.exec.max.dynamic.partitions=1000; -- 全局能被创建文件数目的最大值,通过Hadoop计数器跟踪,若超过则报错 hive.exec.max.created.files=100000; 当你想每天执行某个时间段的分区数据插入,可以考虑一下动静分区结合方式,来看看HQL如何写?

Hive中的关键字

关键字是任何一门语言中都要的一些字符,这些字符都有特殊的含义,一般情况下用户不能直接使用的,因为编译器对关键字是有特殊处理的。 Hive有一些保留的关键字,我们在执行一些语句时,不能将这些关键字作为标识符(Identifier),比如建表语句的表名或者字段名 hive中有很多关键字,直接作为 列名或者表名或者表别名 ,会出错的,例如 user 这个关键字很多人会拿来做表的别名,就会出错: 这里有张表 user_log : u200b 1 15110101010 1577003281739 112.168.1.2 https://www.baidu.com 2 15110101011 1577003281749 112.16.1.23 https://www.baidu.com 3 15110101012 1577003281759 193.168.1.2 https://www.taobao.com 4 15110101013 1577003281769 112.18.1.2 https://www.baidu.com 5 15110101014 1577003281779 112.168.10.2 https://www.baidu.com 6 15110101015 1577003281789 11.168.1.2 https://www.taobao.com 7 15110101016 1577003281790 112.168.1.3 https://www.qq.com 8 15110101017 1577003281791 112.1.1.3 https://www.microsoft.com u200b user 直接做字段的别名,也是会出错的 如果实在想用关键字做别名的话,可以使用反引号 ,也就是键盘上面 Esc 下面的那个键“点”包裹起来,像这样: 屏蔽关键字识别规则,在Hive 2.1.0 及更早期的版本还可以通过设置 set hive.support.sql11.reserved.keywords=false; 取消保留字校验(最新的Hive版本已经不支持此配置项,无效)。或者在hive-site.xml里设置 对于Hive 2.1.0 以后的版本已经不再支持此设置,只能使用反引号处理 hive中的like关键字允许复制一个已经存在的表的结构(只复制表的结构,不复制表中的数据),可以快速建表。 hive中的as关可以创建一个以查询语句结果为数据内容的数据表,并且只要查询语句的结果不为空,创建好数据表后,数据表中就有数据。 hive中的local关键字表示指明将文件从本地(hive运行的那台机器,如果开启的是hive服务,则本地为开启hive服务的那台机器,hive服务客户端(即:编写命令的那台机器)不是本地)中加载到hive中。 Reserved keywords are permitted as identifiers if you quote them as described in Supporting Quoted Identifiers in Column Names (version 0.13.0 and later, see HIVE-6013). Most of the keywords are reserved through HIVE-6617 in order to reduce the ambiguity in grammar (version 1.2.0 and later). There are two ways if the user still would like to use those reserved keywords as identifiers: (1) use quoted identifiers, (2) set hive.support.sql11.reserved.keywords=false. (version 2.1.0 and earlier)

Hive常用查询函数

函数说明: NVL :给值为 NULL 的数据赋值, 它的格式是 NVL( string1, replace_with)。 它的功能是如果string1 为 NULL,则 NVL 函数返回 replace_with 的值,否则返回 string1 的值,如果两个参数都为 NULL ,则返回NULL。 date_format:格式化时间 date_add:时间跟天数相加 date_sub:时间跟天数相减,类似与add,使用一个就ok select date_sub("2019-06-29",5); datediff:两个时间相减 select datediff("2019-06-29","2019-06-24"); CONCAT(string A/col, string B/col…):返回输入字符串连接后的结果,支持任意个输入字符串; CONCAT_WS(separator, str1, str2,...):它是一个特殊形式的 CONCAT()。第一个参数剩余参数间的分隔符。 分隔符可以是与剩余参数一样的字符串。如果分隔符是 NULL, 返回值也将为 NULL。 这个函数会跳过分隔符参数后的任何 NULL 和空字符串。分隔符将被加到被连接的字符串之间; select concat_ws("-",str1,str2) from XX; //str为string类型的列名 COLLECT_SET(col):函数只接受基本数据类型,它的主要作用是将某字段的值进行去重汇总, 产生 array 类型字段。 练习:把星座和血型一样的人归类到一起 第一步转换: 白羊座,A 孙悟空 射手座,A 大海 白羊座,B 宋宋 白羊座,A 猪八戒 射手座,A 凤姐 合并 EXPLODE(col):将hive 一列中复杂的 array 或者 map 结构拆分成多行。 LATERAL VIEW //侧写 用法:LATERAL VIEW udtf(expression) tableAlias AS columnAlias 解释:用于和 split, explode 等UDTF 一起使用,它能够将一列数据拆成多行数据,在此基础上可以对拆分后的数据进行聚合。 练习:将电影分类中的数组数据展开 select explode(category) from movie_info; OVER():指定分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变化而变化; / 在over(里面使用) / CURRENT ROW:当前行; n PRECEDING:往前 n 行数据; n FOLLOWING:往后 n 行数据; UNBOUNDED:起点, UNBOUNDED PRECEDING 表示从前面的起点,UNBOUNDEDFOLLOWING 表示到后面的终点; /* 在over外面使用*/ LAG(col,n):往前第n 行数据; LEAD(col,n):往后第 n 行数据; NTILE(n):把有序分区中的行分发到指定数据的组中,各个组有编号,编号从 1 开始, 对于每一行,NTILE 返回此行所属的组的编号。注意:n 必须为 int 类型。 数据: 一、查询在 2017 年 4 月份购买过的顾客及总人数 group分组一组一个值,over给每一条数据独立开窗 查询顾客的购买明细及购买总额 要将 cost 按照日期进行累加 先排序 再累加 查询顾客上次的购买时间 下次的购买时间 查询前 20%时间的订单信息 RANK() 排序相同时会重复,总数不会变,可以并列 DENSE_RANK() 排序相同时会重复,总数会减少 ROW_NUMBER() 会根据顺序计算 练习:计算每门学科成绩排名 计算每门学科成绩排名

hive窗口函数总结

根据官网的介绍,hive推出的窗口函数功能是对hive sql的功能增强,确实目前用于离线数据分析逻辑日趋复杂,很多场景都需要用到。以下就是对hive窗口函数的一个总结附上案例。 PRECEDING:往前 FOLLOWING:往后 CURRENT ROW:当前行 UNBOUNDED:起点(一般结合PRECEDING,FOLLOWING使用) UNBOUNDED PRECEDING 表示该窗口最前面的行(起点) UNBOUNDED FOLLOWING:表示该窗口最后面的行(终点) 比如说: ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW(表示从起点到当前行) ROWS BETWEEN 2 PRECEDING AND 1 FOLLOWING(表示往前2行到往后1行) ROWS BETWEEN 2 PRECEDING AND 1 CURRENT ROW(表示往前2行到当前行) ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING(表示当前行到终点) 官网有一段话列出了哪些窗口函数是不支持window子句的,如下图所示: 1.LEAD(col,n,DEFAULT) 用于统计窗口内往下第n行值第一个参数为列名,第二个参数为往下第n行(可选,默认为1,不可为负数),第三个参数为默认值(当往下第n行为NULL时候,取默认值,如不指定,则为NULL) 2.LAG(col,n,DEFAULT) 用于统计窗口内往上第n行值第一个参数为列名,第二个参数为往上第n行(可选,默认为1,不可为负数),第三个参数为默认值(当往上第n行为NULL时候,取默认值,如不指定,则为NULL) 3.FIRST_VALUE取分组内排序后,截止到当前行,第一个值,这最多需要两个参数。第一个参数是您想要第一个值的列,第二个(可选)参数必须是false默认为布尔值的布尔值。如果设置为true,则跳过空值。 4.LAST_VALUE取分组内排序后,截止到当前行,最后一个值,这最多需要两个参数。第一个参数是您想要第一个值的列,第二个(可选)参数必须是false默认为布尔值的布尔值。如果设置为true,则跳过空值。 让我们加上window子句来观察一下变化,虽然FIRST_VALUE和LAST_VALUE不常于与window子句结合使用。 1.COUNT 2.SUM 3.MIN 4.MAX 5.AVG 目前支持这五种带有聚合意义的窗口函数,以常用SUM举例。 从结果当中其实可以得到结论,默认情况就是从起点到当前行,不带order by语句其实就是表示窗口内全部行都参与聚合处理,这里其实还有其他用法,读者可以自行尝试一下。 1.ROW_NUMBER 从1开始,按照顺序,生成分组内记录的序列,row_number()的值不会存在重复,当排序的值相同时,按照表中记录的顺序进行排列;通常用于获取分组内排序第一的记录;获取一个session中的第一条refer等。 2.RANK 生成数据项在分组中的排名,排名相等会在名次中留下空位。 3.DENSE_RANK 生成数据项在分组中的排名,排名相等会在名次中不会留下空位。 4.CUME_DIST CUME_DIST 小于等于当前值的行数/分组内总行数 5.PERCENT_RANK PERCENT_RANK 分组内当前行的RANK值-1/分组内总行数-1 6.NTILE NTILE(n) 用于将分组数据按照顺序切分成n片,返回当前切片值,如果切片不均匀,默认增加第一个切片的分布。NTILE不支持ROWS BETWEEN 以上是带有分析功能的窗口函数,使用的频率没有上面两类高,但是也是需要掌握的。 我们先对1-3三种分析窗口函数进行演示 第4-5种: 第六种:NTILE

Hive优化的十大方法

Hive用的好,才能从数据中挖掘出更多的信息来。用过hive的朋友,我想或多或少都有类似的经历:一天下来,没跑几次hive,就到下班时间了。Hive在极大数据或者数据不平衡等情况下,表现往往一般,因此也出现了presto、spark-sql等替代品。这里重点讲解hive的优化方式,例如 一. 表连接优化 二. 用insert into替换union all 如果union all的部分个数大于2,或者每个union部分数据量大,应该拆成多个insert into 语句,实际测试过程中,执行时间能提升50%。示例参考如下: 可以改写为: 三. order by & sort by order by : 对查询结果进行全局排序消耗时间长,需要set hive.mapred.mode=nostrict sort by : 局部排序,并非全局有序,提高效率。 四. transform+python 一种嵌入在hive取数流程中的自定义函数,通过transform语句可以把在hive中不方便实现的功能在python中实现,然后写入hive表中。示例语法如下: 如果除python脚本外还有其它依赖资源,可以使用ADD ARVHIVE。 五. limit 语句快速出结果 一般情况下,Limit语句还是需要执行整个查询语句,然后再返回部分结果。有一个配置属性可以开启,避免这种情况—对数据源进行抽样 缺点:有可能部分数据永远不会被处理到 六. 本地模式 对于小数据集,为查询触发执行任务消耗的时间>实际执行job的时间,因此可以通过本地模式,在单台机器上(或某些时候在单个进程上)处理所有的任务。 可以通过设置属性hive.exec.mode.local.auto的值为true,来让Hive在适当的时候自动启动这个优化,也可以将这个配置写在$HOME/.hiverc文件中。 当一个job满足如下条件才能真正使用本地模式: 七. 并行执行 Hive会将一个查询转化为一个或多个阶段,包括:MapReduce阶段、抽样阶段、合并阶段、limit阶段等。默认情况下,一次只执行一个阶段。 不过,如果某些阶段不是互相依赖,是可以并行执行的。 会比较耗系统资源。 八. 调整mapper和reducer的个数 假设input目录下有1个文件a,大小为780M,那么hadoop会将该文件a分隔成7个块(6个128m的块和1个12m的块),从而产生7个map数 假设input目录下有3个文件a,b,c,大小分别为10m,20m,130m,那么hadoop会分隔成4个块(10m,20m,128m,2m),从而产生4个map数。 即如果文件大于块大小(128m),那么会拆分,如果小于块大小,则把该文件当成一个块。 map执行时间:map任务启动和初始化的时间+逻辑处理的时间。 减少map数 若有大量小文件(小于128M),会产生多个map,处理方法是: 前面三个参数确定合并文件块的大小,大于文件块大小128m的,按照128m来分隔,小于128m,大于100m的,按照100m来分隔,把那些小于100m的(包括小文件和分隔大文件剩下的)进行合并。 set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; – 执行前进行小文件合并。 增加map数 当input的文件都很大,任务逻辑复杂,map执行非常慢的时候,可以考虑增加Map数,来使得每个map处理的数据量减少,从而提高任务的执行效率。 set mapred.reduce.tasks=? 一般根据输入文件的总大小,用它的estimation函数来自动计算reduce的个数:reduce个数 = InputFileSize / bytes per reducer 九. 严格模式 十. 数据倾斜 表现: 任务进度长时间维持在99%(或100%),查看任务监控页面,发现只有少量(1个或几个)reduce子任务未完成。因为其处理的数据量和其他reduce差异过大。单一reduce的记录数与平均记录数差异过大,通常可能达到3倍甚至更多。 最长时长远大于平均时长。 原因: 解决方案:参数调节

如何用hive实现cte递归关联

说的是hive,你写的是sqlserver吧

Hive命令-权限篇

一、权限查询 1、查询master用户拥有的权限 2、查询master用户对于库dw拥有的权限 二、赋权限 给master用户赋dw库all的操作权限 三、服务器上切换登录用户

为什么使用Hive?Hive提供了什么?Hive支持哪些用户

为什么使用Hive?为什么使用Hive?那么,在哪里使用Hive呢?在载入了60亿行(经度、维度、时间、数据值、高度)数据集到MySQL后,系统崩溃了,并经历过数据丢失。这可能部分是因为我们最初的策略是将所有的数据都存储到单一的一张表中了。后来,我们调整了策略通过数据集和参数进行分表,这有所帮助但也因此引入了额外的消耗,而这并非是我们愿意接受的。相反,我们决定尝试使用Apache Hive技术。我们安装了Hive 0.5 + 20,使用CDHv3和Apache Hadoop(0 20 2 + 320)。CDHv3还包含有许多其他相关工具,包括Sqoop和Hue这些在我们的架构中都标识出来了,如图23-3底部所示。我们使用Apache Sqoop转储数据到Hive中,然后通过写一个Apache OODT包装器,来使Hive按照空间/时间约束查询数据,然后将结果提供给RCMET和其他用户(图23-2中间部分显示)。RCMES集群的完整的架构如图23- 3所示。我们有5台机器,包括图中所示的一个主/从配置,通过一个运行GigE的私人网进行连接。Hive提供了什么Photobucket公司使用Hive的主要目标是为业务功能、系统性能和用户行为提供答案。为了满足这些需求,我们每晚都要通过Flume从数百台服务器上的MySQL数据库中转储来自Web服务器和自定义格式日志TB级别的数据。这些数据有助于支持整个公司许多组织,比如行政管理、广告、客户支持、产品开发和操作,等等。对于历史数据,我们保持所有MySQL在每月的第一天创建的所有的数据作为分区数据并保留30天以上的日志文件。Photobucket使用一个定制的ETL框架来将MySQL数据库中数据迁移到Hive中。使用Flume将日志文件数据写入到HDFS中并按照预定的Hive流程进行处理。Hive支持的用户有哪些行政管理依赖于使用Hadoop提供一般业务健康状况的报告。Hive允许我们解析结构化数据库数据和非结构化的点击流数据,以及业务所涉及的数据格式进行读取。广告业务使用Hive筛选历史数据来对广告目标进行预测和定义配额。产品开发无疑是该组织中产生最大数量的特定的查询的用户了。对于任何用户群,时间间隔变化或随时间而变化。Hive是很重要的,因为它允许我们通过对在当前和历史数据中运行A / B测试来判断在一个快速变化的用户环境中新产品的相关特性。在Photobucket公司中,为我们的用户提供一流的系统是最重要的目标。从操作的角度来看,Hive被用来汇总生成跨多个维度的数据。在公司里知道最流行的媒体、用户、参考域是非常重要的。控制费用对于任何组织都是重要的。一个用户可以快速消耗大量的系统资源,并显著增加每月的支出。Hive可以用于识别和分析出这样的恶意用户,以确定哪些是符合我们的服务条款,而哪些是不符合的。也可以使用Hive对一些操作运行A / B测试来定义新的硬件需求和生成ROI计算。Hive将用户从底层MapReduce代码解放出来的能力意味着可以在几个小时或几天内就可以获得答案,而不是之前的数周。Hive中的数据库Hive中数据库的概念本质上仅仅是表的一个目录或者命名空间。然而,对于具有很多组和用户的大集群来说,这是非常有用的,因为这样可以避免表命名冲突。通常会使用数据库来将生产表组织成逻辑组。如果用户没有显式指定数据库,那么将会使用默认的数据库default。下面这个例子就展示了如何创建一个数据库:hive> CREATE DATABASE financials;如果数据库financials已经存在的话,那么将会抛出一个错误信息。使用如下语句可以避免在这种情况下抛出错误信息:hive> CREATE DATABASE IF NOT EXISTS financials;虽然通常情况下用户还是期望在同名数据库已经存在的情况下能够抛出警告信息的,但是IF NOT EXISTS这个子句对于那些在继续执行之前需要根据需要实时创建数据库的情况来说是非常有用的。在所有的数据库相关的命令中,都可以使用SCHEMA这个关键字来替代关键字TABLE。随时可以通过如下命令方式查看Hive中所包含的数据库:hive> SHOW DATABASES;defaultfinancialshive> CREATE DATABASE human_resources;hive> SHOW DATABASES;defaultfinancialshuman_resources如果数据库非常多的话,那么可以使用正则表达式匹配来筛选出需要的数据库名,正则表达式这个概念,将会在第6.2.3节“Like和RLike”介绍。下面这个例子展示的是列举出所有以字母h开头,以其他字符结尾(即.*部分含义)的数据库名:hive> SHOW DATABASES LIKE "h.*";human_resourceshive> ...Hive会为每个数据库创建一个目录。数据库中的表将会以这个数据库目录的子目录形式存储。有一个例外就是default数据库中的表,因为这个数据库本身没有自己的目录。数据库所在的目录位于属性hive.metastore.warehouse.dir所指定的顶层目录之后,这个配置项我们已经在前面的第2.5.1节“本地模式配置”和第2.5.2节“分布式模式和伪分布式模式配置”中进行了介绍。假设用户使用的是这个配置项默认的配置,也就是/user/hive/warehouse,那么当我们创建数据库financials时,Hive将会对应地创建一个目录/user/hive/warehouse/financials.db。这里请注意,数据库的文件目录名是以.db结尾的。用户可以通过如下的命令来修改这个默认的位置:hive> CREATE DATABASE financials> LOCATION "/my/preferred/directory";用户也可以为这个数据库增加一个描述信息,这样通过DESCRIBE DATABASE <database> 命令就可以查看到该信息。hive> CREATE DATABASE financials> COMMENT "Holds all financial tables";hive> DESCRIBE DATABASE financials;financials Holds all financial tableshdfs://master-server/user/hive/warehouse/financials.db从上面的例子中,我们可以注意到,DESCRIEB DATABASE语句也会显示出这个数据库所在的文件目录位置路径。在这个例子中,URI格式是hdfs。如果安装的是MapR,那么这里就应该是maprfs。对于亚马逊弹性MapReduce(EMR)集群,这里应该是hdfs,但是用户可以设置hive.metastore.warehouse.dir为亚马逊S3特定的格式(例如,属性值设置为s3n://bucketname...)。用户可以使用s3作为模式,但是如果使用新版的规则s3n会更好。前面DESCRIBE DATABASE语句的输出中,我们使用了master-server来代表URI权限,也就是说应该是由文件系统的“主节点”(例如,HDFS中运行NameNode服务的那台服务器)的服务器名加上一个可选的端口号构成的(例如,服务器名:端口号这样的格式)。如果用户执行的是伪分布式模式,那么主节点服务器名称就应该是localhost。对于本地模式,这个路径应该是一个本地路径,例如file:///user/hive/warehouse/financials.db。如果这部分信息省略了,那么Hive将会使用Hadoop配置文件中的配置项fs.default.name作为master-server所对应的服务器名和端口号,这个配置文件可以在$HADOOP_HOME/conf这个目录下找到。需要明确的是,hdfs:///user/hive/warehouse/financials.db和hdfs://master-server/user/hive/warehouse/financials.db是等价的,其中master-server是主节点的DNS名和可选的端口号。为了保持完整性,当用户指定一个相对路径(例如,some/relative/path)时,对于HDFS和Hive,都会将这个相对路径放到分布式文件系统的指定根目录下(例如,hdfs:///user/<user-name>)。然而,如果用户是在本地模式下执行的话,那么当前的本地工作目录将是some/relative/path的父目录。为了脚本的可移植性,通常会省略掉那个服务器和端口号信息,而只有在涉及到另一个分布式文件系统实例(包括S3存储)的时候才会指明该信息。此外,用户还可以为数据库增加一些和其相关的键-值对属性信息,尽管目前仅有的功能就是提供了一种可以通过DESCRIBE DATABASE EXTENDED <database>语句显示出这些信息的方式:hive> CREATE DATABASE financials> WITH DBPROPERTIES ("creator" = "Mark Moneybags", "date" = "2012-01-02");hive> DESCRIBE DATABASE financials;financials hdfs://master-server/user/hive/warehouse/financials.dbhive> DESCRIBE DATABASE EXTENDED financials;financials hdfs://master-server/user/hive/warehouse/financials.db{date=2012-01-02, creator=Mark Moneybags);USE命令用于将某个数据库设置为用户当前的工作数据库,和在文件系统中切换工作目录是一个概念:hive> USE financials;现在,使用像SHOW TABLES这样的命令就会显示当前这个数据库下所有的表。不幸的是,并没有一个命令可以让用户查看当前所在的是哪个数据库!幸运的是,在Hive中是可以重复使用USE…命令的,这是因为在Hive中并没有嵌套数据库的概念。可以回想下,在第2.7.2节“变量和属性”中提到过,可以通过设置一个属性值来在提示符里面显示当前所在的数据库(Hive v0.8.0版本以及之后的版本才支持此功能):hive> set hive.cli.print.current.db=true;hive (financials)> USE default;hive (default)> set hive.cli.print.current.db=false;hive> ...最后,用户可以删除数据库:hive> DROP DATABASE IF EXISTS financials;IF EXISTS子句是可选的,如果加了这个子句,就可以避免因数据库finanacials不存在而抛出警告信息。默认情况下,Hive是不允许用户删除一个包含有表的数据库的。用户要么先删除数据库中的表,然后再删除数据库;要么在删除命令的最后面加上关键字CASCADE,这样可以使Hive自行先删除数据库中的表:hive> DROP DATABASE IF EXISTS financials CASCADE;如果使用的是RESTRICT这个关键字而不是CASCADE这个关键字的话,那么就和默认情况一样,也就是,如果想删除数据库,那么必须先要删除掉该数据库中的所有表。如果某个数据库被删除了,那么其对应的目录也同时会被删除。

hive 建表方式及参数详解

u2003u2003 hive中有两种表:外部表和内部表(managed and external)。可以通过 desc formatted table_name 命令来查看表的信息,来辨别表是外部表还是内部表。 在hive默认创建到表是内部表,外部表创建需要加 EXTERNAL 命令,如: CREATE EXTERNAL table_name 。 u2003 u2003内部表的文件,元数据和统计信息等由hive进行管理,一般被存储在 hive.metastore.warehouse.dir 目录下,当表被删除或者分区被删除,相对应的数据和元数据就会被删除。一般用来当做临时表。 外部表与内部表相反,可以指定location,可以不基于hive来操作外部表文件。当表被删除或者分区被删除时对应的数据还会存在。只是hive删除了其元信息,表的数据文件依然存在于文件系统中。若是表被删除,可以重新建这个表,指定location到数据文件处,然后通过msck repair table table_name命令刷新数据的元信息到hive中,也就是恢复了数据。 u2003u2003 msck repair table 的详细用法就不讲了,可以参考 HIVE常用命令之MSCK REPAIR TABLE命令简述

Hive优化的原则参考

需要满足以下条件: hive.mapred.mode=true,严格模式不允许执行以下查询: 分区表上没有指定了分区 没有limit限制的order by语句 笛卡尔积:JOIN时没有ON语句 两个聚集函数不能有不同的DISTINCT列,以下表达式是错误的: SELECT语句中只能有GROUP BY的列或者聚集函数。 第一个MRJob 中, Map的输出结果集合会随机分布到Reduce中,每个Reduce做部分聚合操作,并输出结果,这样处理的结果是相同的GroupBy Key 有可能被分发到不同的Reduce中,从而达到负载均衡的目的;第二个MRJob再根据预处理的数据结果按照GroupBy Key分布到 Reduce中(这个过程可以保证相同的GroupBy Key被分布到同一个Reduce中),最后完成最终的聚合操作。 FROM test INSERT OVERWRITE TABLE count1 SELECT count(DISTINCT test.dqcode) GROUP BY test.zipcode INSERT OVERWRITE TABLE count2 SELECT count(DISTINCT test.dqcode) GROUP BY test.sfcode; ORDER BY colName ASC/DESC hive.mapred.mode=strict时需要跟limit子句 hive.mapred.mode=nonstrict时使用单个reduce完成排序 SORT BY colName ASC/DESC :每个reduce内排序 DISTRIBUTE BY(子查询情况下使用 ):控制特定行应该到哪个reducer,并不保证reduce内数据的顺序 CLUSTER BY :当SORT BY 、DISTRIBUTE BY使用相同的列时。 增加map数目: 当input的文件都很大,任务逻辑复杂,map执行非常慢的时候,可以考虑增加Map数,来使得每个map处理的数据量减少,从而提高任务的执行效率。 假设有这样一个任务:   select data_desc, count(1), count(distinct id),sum(case when …),sum(case when ...),sum(…) from a group by data_desc 如果表a只有一个文件,大小为120M,但包含几千万的记录,如果用1个map去完成这个任务,肯定是比较耗时的,这种情况下,我们要考虑将这一个文件合理的拆分成多个,这样就可以用多个map任务去完成。   set mapred.reduce.tasks=10;   create table a_1 as select * from a distribute by rand(123); 这样会将a表的记录,随机的分散到包含10个文件的a_1表中,再用a_1代替上面sql中的a表,则会用10个map任务去完成。每个map任务处理大于12M(几百万记录)的数据,效率肯定会好很多。 reduce数目设置:  参数1:hive.exec.reducers.bytes.per.reducer=1G:每个reduce任务处理的数据量  参数2:hive.exec.reducers.max=999(0.95 TaskTracker数):每个任务最大的reduce数目  reducer数=min(参数2,总输入数据量/参数1)  set mapred.reduce.tasks:每个任务默认的reduce数目。典型为0.99 reduce槽数,hive将其设置为-1,自动确定reduce数目。 15.使用索引: hive.optimize.index.filter:自动使用索引 hive.optimize.index.groupby:使用聚合索引优化GROUP BY操作

Hive:分区表表结构和数据复制

摘要: Hive , Shell Hive复制表包括两种 对于非分区表如果要完全复制一张表到另一张表,直接使用CREATE TABLE ... AS语句即可,比如以下复制一个表的两个字段以及字段的值到另一个表 对于分区表如果使用CREATE TABLE ... AS语句则分区失效,但是可以执行不报错,且字段和数据都能完全复制 以上有一张分区表,以dt字段作为分区,使用CREATE TABLE ... AS进行全表复制 检查表结构和表数据量都没有问题 检查分区,报错此表不是分区表,is not a partitioned table,但是在表结构中确实存在本来的分区字段dt,此时dt字段的分区功能失效,但是数据保留住了 分区表的全称复制且带有分区的操作方法需要使用 LIKE 语句复制到分区信息,具体步骤如下 第一步复制得到一张空表,具有原表的表结构和分区信息 下一步使用hdfs命令操作将原表在hdfs的存储路径复制到新表的路径, 一张表的存储路径是一个目录,该目录下还存在子目录,每一个子目录代表一个分区,在分区目录下就是数据文件,数据文件是part开头格式,由Hive的分桶策略将同一分区下的数据进行划分 复制语句采用 * 通配符将原表目录下所有文件复制到新表路径下,查看新表的hdfs路径下数据文件 此时新表虽然对应数仓目录下有数据文件,但是在Hive客户端还是查不到数据为空表, 因为一个个数据分区不存在在新表的元数据中,数据是以分区目录为单位聚合的,新表目前查不到一个分区则自然查不到数据 下一步修复表的分区元数据,使用 MSCK REPAIR TABLE 命令 由输出的执行过程可见MSCK REPAIR TABLE命令先检查了表的分区信息是否存在在元数据,然后对不存在的分区信息进行修复,修复后该表即可正常使用 MSCK REPAIR TABLE 的作用是 只需要只用这一个命令就可以 快速 , 自动化 地添加(修复)全部分区 ,在Hive中如果先建分区表,并且以数据拷贝到对应HDFS目录这种方式作为初始化,需要手动添加分区才能使用,如果分区过多,使用 ALTER TABLE ADD PARTITION 极为不变,下面做一下测试看ALTER TABLE ADD PARTITION是否也能完成分区表的完全复制 下一步采用手动添加1个分区dt="20201209" 验证了手动分区能够完成, MSCK REPAIR TABLE只是自动化的扫描一遍数仓目录下的分区信息(dt="20201209" 到 dt="20210317") ,如果编写一个Shell脚本也能实现如下 运行这个Shell脚本后能达到同样的效果,但是这个脚本执行了15分钟,需要频繁启动和关闭Hive进程

Hive的几种常见的数据导入方式

零.Hive的几种常见的数据导入方式常用的的有三种: 1.从本地文件系统中导入数据到Hive表; 2.从HDFS上导入数据到Hive表; 3.在创建表的时候通过从别的表中查询出相应的记录并插入到所创建的表中。 Hive配置: HDFS中Hive数据文件存放目录(启动hive后HDFS自动创建): HDFS: /usr/hive/warehouse hadoop fs -mkdir /usr/hive/warehouse 命令创立 本地数据存放目录: 本地:/home/santiago/data/hive一.从本地文件系统中导入数据到Hive表1.在hive中建表hive> show databases;OKdefaultTime taken: 1.706 seconds, Fetched: 1 row(s)hive> create table guo_test(Name string,String string)> row format delimited> fields terminated by ","> stored as textfile;hive> show tables;OKguo_testTime taken: 0.024 seconds, Fetched: 1 row(s)1234567891011122.在本地文件建立同类型数据表santi@hdp:~/data/hive$ lshive_test.txtsanti@hdp:~/data/hive$ cat hive_test.txtsanti,you are a zhazha.12343.导入数据并测试hive>load data local inpath "/home/santi/data/hive/hive_test.txt" into table guo_test;hive> select * from guo_test;hive>dfs -ls /usr/hive/warehouse/guo_test; #hadoop fs -ls /usr/hive/warehouseFound 1 itemsdrwxrwxr-x - santiago supergroup 0 2017-01-14 21:13/usr/hive/warehouse/guo_test12345678发现hive-site,xml设置的HDFS文件存储位置中多了guo_test这个文件夹#hadoop fs -ls /usr/hive/warehouse/guo_testFound 1 items-rwxrwxr-x 1 santiago supergroup 24 2017-01-14 21:13/usr/hive/warehouse/guo_test/hive_test.txt hive> select * from guo_test;OKsanti you are a zhazha.12345678在该文件夹中找到了所写入hive数据仓库的文件。 [注]本地数据写入成功,但是从本地将数据导入到Hive表的过程中,其实是先将数据临时复制到HDFS的一个目录下(典型的情况是复制到上传用户的HDFS home目录下,比如/home/santi/),然后再将数据从临时目录下移动到对应的Hive表的数据目录里面(临时目录不保留数据)。二.从HDFS文件系统中导入数据到Hive表1.在HDFS文件系统上建立数据文件 hdfs上没有vim命令,则需要将本地数据文件手动传入到HDFS上/data/hive# vim data_HDtoHive/data/hive# cat data_HDtoHivedata from, HDFS to Hive #hadoop fs -put /home/santi/data/hive/data_HDtoHive /usr/data/input//数据传入# hadoop fs -ls /usr/data/input123452导入数据hive> load data inpath "/usr/data/input/data_HDtoHive" into table guo_test;hive> select * from guo_test;OKdata from HDFS to Hive santi you are a zhazha.Time taken: 0.172 seconds, Fetched: 2 row(s)123456数据写入成功 数据存hive配置的数据存储位置中。 [注] 从本地导入数据语句为 hive>load data local inpath ‘/home/santi/data/hive/hive_test.txt" into table guo_test; 从HDFS中导入数据的语句为 hive> load data inpath ‘/usr/data/input/data_HDtoHive" into table guo_test; 差距在local这个命令这里。 而从HDFS系统上导入到Hive表的时候,数据转移。HDFS系统上查找不到相关文件。三.从HIVE表选取数据插入新的HIVE表命令为create table 表名 as selecr xxx from 表名。hive> create table hivedata_test1> as> select name> from guo_test;hive> select * from hivedata_test1;OKdata fromsantiTime taken: 0.116 seconds, Fetched: 2 row(s)123456789[注]hive是分区表有稍微区别 在Hive中,表的每一个分区对应表下的相应目录,所有分区的数据都是存储在对应的目录中。比表有a和b两个分区,则对应a=xxx,b=xx对应表的目录为/user/hive/warehouse/a=xxx user/hive/warehouse/b=xx,所有属于这个分区的数据都存放在这个目录中。hive> create table hivedata_test2(> Name string)> partitioned by> (String string)> ROW FORMAT DELIMITED> FIELDS TERMINATED BY ","> STORED AS TEXTFILE;hive> insert into table hivedata_test2> partition(String="best")> select Name> from guo_test;hive> select * from hivedata_test2;OKdata from bestsanti bestTime taken: 1.549 seconds, Fetched: 2 row(s)# hadoop fs -ls /usr/hive/warehouse/hivedata_test2Found 1 itemsdrwxrwxr-x -santiago supergroup 0 2017-02-14 17:40/usr/hive/warehouse/hivedata_test2/string=best

hive的几种文件格式

hive支持的存储格式:  hive支持的存储格式包括TextFile、SequenceFile、RCFile、Avro Files、ORC Files、Parquet。TextFile:  Hive默认格式,数据不做压缩,磁盘开销大,数据解析开销大。可结合Gzip、Bzip2、Snappy等使用(系统自动检查,执行查询时自动解压),但使用这种方式,hive不会对数据进行切分,从而无法对数据进行并行操作。SequenceFile:  SequenceFile是Hadoop API 提供的一种二进制文件,它将数据以的形式序列化到文件中。这种二进制文件内部使用Hadoop 的标准的Writable 接口实现序列化和反序列化。它与Hadoop API中的MapFile 是互相兼容的。Hive 中的SequenceFile 继承自Hadoop API 的SequenceFile,不过它的key为空,使用value 存放实际的值, 这样是为了避免MR 在运行map 阶段的排序过程。SequenceFile的文件结构图:Header通用头文件格式:SEQ 3BYTE Nun 1byte数字 keyClassName ValueClassName compression (boolean)指明了在文件中是否启用压缩 blockCompression (boolean,指明是否是block压缩) compression codec Metadata 文件元数据 Sync 头文件结束标志 Block-Compressed SequenceFile格式  RCFileRCFile是Hive推出的一种专门面向列的数据格式。 它遵循“先按列划分,再垂直划分”的设计理念。当查询过程中,针对它并不关心的列时,它会在IO上跳过这些列。需要说明的是,RCFile在map阶段从 远端拷贝仍然是拷贝整个数据块,并且拷贝到本地目录后RCFile并不是真正直接跳过不需要的列,并跳到需要读取的列, 而是通过扫描每一个row group的头部定义来实现的,但是在整个HDFS Block 级别的头部并没有定义每个列从哪个row group起始到哪个row group结束。所以在读取所有列的情况下,RCFile的性能反而没有SequenceFile高。

Hive优化:严格模式

Hive提供了一个严格模式,可以防止用户执行那些可能意想不到的不好的影响查询。 通过设置属性hive.mapred.mode值为默认是非严格格式nonstrict。开启严格模式需要修改hive.mapred.mode值为strict,开启严格模式可以禁止3钟类型的查询。 --设置非严格模式(默认) set hive.mapred.mode=nonstrict; --设置严格模式 set hive.mapred.mode=strict; (1)对于分区表,除非where语句中含有分区字段过滤条件来限制范围,否则不允许执行 --设置严格模式下 执行sql语句报错;非严格模式下的可以的 select * from order_partition; 异常信息:Error :Error while compliling statement:FAILED:SemanticException [Error 10041]:No parttion predicate found for Alias "order_partition" Table "order_partition" (2)对于使用了order by 语句的查询,要求必须使用limit语句 --设置严格模式下 执行sql语句报错;非严格模式下可以的 select * from order_partition where month="2019-03" order by order_price; 异常信息:Error Error while compiling statement:FAILED:SemanticException 1:61 In strict mode,if ORDER BY is specified ,LIMIT must also be specifiied.Error encountered near token "order_price" (3)限制笛卡尔积的查询 严格模式下,避免出现笛卡尔积的查询

如何查看hive日志

Hive中的日志分为两种1. 系统日志,记录了hive的运行情况,错误状况。2. Job 日志,记录了Hive 中job的执行的历史过程。在hive/conf/ hive-log4j.properties 文件中记录了Hive日志的存储情况,默认的存储情况:hive.root.logger=WARN,DRFAhive.log.dir=/tmp/${user.name} # 默认的存储位置hive.log.file=hive.log # 默认的文件名//Location of Hive run time structured log fileHIVEHISTORYFILELOC("hive.querylog.location", "/tmp/" + System.getProperty("user.name")),默认存储与 /tmp/{user.name}目录下。

已搭建好HADOOP,HIVE,怎么进入并操作数据

[Hadoop@master ~]$ cd $HIVE_HOME --进入Hive目录[hadoop@master hive]$ bin/hive --进入hive环境hive> show databases; 显示已有数据库hive> use test; 使用数据库hive> select * from test_1; 显示表中数据

hive数据倾斜及处理

火山日常啰嗦 学习了一些大数据的相关框架后,发现应用层的东西确实不难,真正难的都是底层原理,所以我查看了很多资料,借鉴了前人的方法再加上自己的理解,写下了这篇文章。 数据倾斜的直白概念: 数据倾斜就是数据的分布不平衡,某些地方特别多,某些地方又特别少,导致的在处理数据的时候,有些很快就处理完了,而有些又迟迟未能处理完,导致整体任务最终迟迟无法完成,这种现象就是数据倾斜。 针对mapreduce的过程来说就是,有多个reduce,其中有一个或者若干个reduce要处理的数据量特别大,而其他的reduce处理的数据量则比较小,那么这些数据量小的reduce很快就可以完成,而数据量大的则需要很多时间,导致整个任务一直在等它而迟迟无法完成。 跑mr任务时常见的reduce的进度总是卡在99%,这种现象很大可能就是数据倾斜造成的。 产生数据倾斜的原因: 1) key的分布不均匀或者说某些key太集中。 上面就说过,reduce的数据量大小差异过大,而reduce的数据是分区的结果,分区是对key求hash值,根据hash值决定该key被分到某个分区,进而进入到某个reduce,而如果key很集中或者相同,那么计算得到它们的hash值可能一样,那么就会被分配到同一个reduce,就会造成这个reduce所要处理的数据量过大。 2) 业务数据自身的特性。 比如某些业务数据作为key的字段本就很集中,那么结果肯定会导致数据倾斜啊。 还有其他的一些原因,但是,根本原因还是key的分布不均匀,而其他的原因就是会造成key不均匀,进而导致数据倾斜的后果,所以说根本原因是key的分布不均匀。 既然有数据倾斜这种现象,就必须要有数据倾斜对应的处理方案啊。 简单地说数据倾斜这种现象导致的任务迟迟不能完成,耗费了太多时间,极大地影响了性能,所以我们数据倾斜的解决方案设计思路就是往如何提高性能,即如何缩短任务的处理时间这方面考虑的,而要提高性能,就要让key分布相对均衡,所以我们的终极目标就是考虑如何预处理数据才能够使得它的key分布均匀。 常见的数据倾斜处理方案: 1 设置参数 1)设置hive.map.aggr=true //开启map端部分聚合功能,就是将key相同的归到一起,减少数据量,这样就可以相对地减少进入reduce的数据量,在一定程度上可以提高性能,当然,如果数据的减少量微乎其微,那对性能的影响几乎没啥变化。 2)设置hive.groupby.skewindata=true //如果发生了数据倾斜就可以通过它来进行负载均衡。当选项设定为 true,生成的查询计划会有两个 MR Job。第一个 MR Job 中,Map 的输出结果集合会随机分布到 Reduce 中,每个 Reduce 做部分聚合操作,并输出结果,这样处理的结果是相同的Key 有可能被分发到不同的 Reduce 中,从而达到负载均衡的目的;第二个 MR Job 再根据预处理的数据结果按照Key 分布到 Reduce 中(这个过程是按照key的hash值进行分区的,不同于mr job1的随机分配,这次可以保证相同的Key 被分布到同一个 Reduce 中),最后完成最终的聚合操作。所以它主要就是先通过第一个mr job将key随机分配到reduce,使得会造成数据倾斜的key可能被分配到不同的reduce上,从而达到负载均衡的目的。到第二个mr job中,因为第一个mr job已经在reduce中对这些数据进行了部分聚合(就像单词统计的例子,a这个字母在不同的reduce中,已经算出它在每个reduce中的个数,但是最终的总的个数还没算出来,那么就将它传到第二个mr job,这样就可以得到总的单词个数),所以这里直接进行最后的聚合就可以了。 3)hive.exec.reducers.bytes.per.reducer=1000000000 (单位是字节) 每个reduce能够处理的数据量大小,默认是1G 4)hive.exec.reducers.max=999 最大可以开启的reduce个数,默认是999个 在只配了hive.exec.reducers.bytes.per.reducer以及hive.exec.reducers.max的情况下,实际的reduce个数会根据实际的数据总量/每个reduce处理的数据量来决定。 5)mapred.reduce.tasks=-1 实际运行的reduce个数,默认是-1,可以认为指定,但是如果认为在此指定了,那么就不会通过实际的总数据量/hive.exec.reducers.bytes.per.reducer来决定reduce的个数了。 2 sql语句优化 给几个具体的场景以及在这些场景下的处理方案: 1)进行表的join这种业务操作时,经常会产生数据倾斜。 原因就是这些业务数据本就存在key会分布不均匀的风险,所以我们join时不能使用普通的join(reduce端join)或者可以使用普通join,但是是优化后的。 但是这种操作有个前提条件就是仅适用于小表join大表,而小表怎么定义它的大小,多小的表才算小表,这里有个参数可以确定的(但是这个参数名我暂时忘记了),如果小表的数据大小小于这个值,就可以使用map join,而是在这种情况下是自动使用map join这种方案的。所以如果是大小表join,直接用map join,避免数据倾斜。 方法1:(普通join) select * from log a join users b on (a.user_id is not null and a.user_id = b.user_id ); 这是属于表的内连接的,两张表不满足条件的记录都不保留。 方法2:检测到user_id是null时给它赋予一个新值(这个新值由一个字符串(比如我自己给它定一个 hive)加上一个随机数组成),这样就可以将原来集中的key分散开来,也避免了数据倾斜的风险。而且因为这些数据本来就是无效数据,根本不会出现在结果表中,所以,这样处理user_id(由一个字符串(比如我自己给它定一个 hive)加上一个随机数),它也无法关联的,因为有效的数据的user_id没有这种形式的,所以就算这些无效数据出现在不同的reduce中还是不会影响结果的,我这样处理只是为了将它们分散开而已,所以用这种方法处理,结果表中也不会出现null这些无效数据,跟过滤处理方案得到的结果是一样的。(普通join) select * from log a join users b on case when a.user_id is null then concat(‘hive",rand() ) else a.user_id end = b.user_id; 但是这两种方案只是适用于大表join大表的内连接,两张表的无效数据都不保留。 但是如果对于左外连接或者右外连接这种情况,即使驱动表中某些记录在另一张表中没有数据与它对应,但我们是依然需要保留驱动表的这些数据的,那该怎么办呢?其实很简单,只需要将上述方法得到的结果再与驱动表的这些无数据取并集就可以了。 如下: select * from log a left outer join users b on a.user_id is not null and a.user_id = b.user_id union all select * from log a where a.user_id is null; 2)虽然都是大表,但是呢对于某些业务数据而言,其有用的部分只占它所在表的很少一部分,那么我们就可以将它们先取出来,得到的结果应该是一张小表,那么就可以使用map join来避免数据倾斜了。 场景:用户表中user_id字段为int,log表中user_id字段既有string类型也有int类型。 当按照user_id进行两个表的Join操作时,因为我们在连接时要进行user_id的比较,所以需要user_id的类型都相同,如果我们选择将log表中的String类型转换为int类型,那么就可能会出现这种情况:String类型转换为int类型得到的都是null值(这就是类型转换的问题了,String类型数据转换为int类型会失败,数据丢失,就会赋null值),如果所有的String类型的user_id都变成了null,那么就又出现了集中的key,分区后就又会导致数据倾斜。所以我们进行类型转换时不能选择将String类型转换为int,而应该将int类型转换为String,因为int转换为String不会出问题,int类型原来的值是什么,转换为String后对应的字符串就会是什么,形式没变,只是类型变了而已。 解决方法:把int类型转换成字符串类型 select * from users a join logs b on (a.usr_id = cast(b.user_id as string)); 比如有一份日志,要你从日志中统计某天有多少个用户访问网站,即统计有多少个不同的user_id;但是呢这个网站却又恰巧遭到攻击,日志中大部分都是同一个user_id的记录,其他的user_id属于正常访问,访问量不会很大,在这种情况下,当你直接使用count(distinct user_id)时,这也是要跑mr任务的啊,这时这些大量的相同的user_id就是集中的key了,结果就是通过分区它们都被分到一个reduce中,就会造成这个reduce处理的数据特别大,而其中的reduce处理的数据都很小,所以就会造成数据倾斜。 那么要怎么优化呢? 方法1:可以先找出这个user_id是什么,过滤掉它,然后通过count(distinct user_id)计算出剩余的那些user_id的个数,最后再加1(这1个就是那个被过滤掉的user_id,虽然它有大量的记录,但是ser_id相同的都是同一个用户,而我们要计算的就是用户数) sql语句展示: 分组求和后降序排序,就可以得到这个数据量最大的user_id是什么,然后我们下一步操作时就过滤它,等计算完其他的再加上它这一个。 select user_id,count(user_id) from log group by user_id desc limit 2; select count(distinct user_id)+1 as sum from log; sum就是最终的结果--用户数 方法2:我们可以先通过group by分组,然后再在分组得到的结果的基础之上进行count sql语句展示: select count(*) from (select user_id from log group by user_id) new_log; 总的来说就是,数据倾斜的根源是key分布不均匀,所以应对方案要么是从源头解决(不让数据分区,直接在map端搞定),要么就是在分区时将这些集中却无效的key过滤(清洗)掉,或者是想办法将这些key打乱,让它们进入到不同的reduce中。 性能调优是指通过调整使得机器处理任务的速度更快,所花的时间更少,而数据倾斜的处理是hive性能调优的一部分,通过处理能够大大减少任务的运行时间。 除了数据倾斜的处理之外,hive的优化还有其他方面的,例如where子句优化: select * from a left outer join b on (a.key=b.key) where a.date="2017-07-11" and b.date="2017-07-11"; 这是一个左外连接。 这个sql语句执行的结果是:得到的结果是表a与表b的连接表,且表中的记录的date都是"2017-07-11"。 而这个sql语句的执行过程是:逐条获取到a表的记录,然后扫描b表,寻找字段key值为a.key的记录,找到后将b表的这条记录连接到a表上,然后判断连接后的这条记录是否满足条件a.date="2017-07-11" and b.date="2017-07-11",如果满足,则显示,否则,丢弃。 因为这是一个左外连接,且a为驱动表,连接时在a中发现key而在b中没有发现与之相等的key时,b中的列将置为null,包括列date,一个不为null,一个为null,这样后边的where就没有用了。 简答的说这个方案的做法就是先按连接条件进行连接,连接后再看where条件,如果不满足就丢弃,那之前连接所做的那些功夫就浪费了,白白耗费了资源(cpu等),增加了运行的总时间,如果有一种方案可以在未进行连接之前就直接判断出不满足最终的条件,那么就可以直接丢弃它,这样对于这样的记录就不要浪费资源以及时间去连接了,这样也是能提升性能的,下面就看看这种方案: sql语句: 将刚才的where限制条件直接放到on里面,那么就变成了满足这三个条件才会进行连接,不满足的直接过滤掉,就像上面所说的,少了无效连接那一步,就相对地节约了时间,如果这样的无效连接的记录很多的话,那么采用这种改进版的方案无疑能够较大程度地提高性能。 select * from a left outer join b on (a.key=b.key and a.date="2017-07-11" and b.date="2017-07-11"); 不管怎么说,我们在运行任务时,总是希望能加快运行速度,缩短运行时间,更快地得到结果,即提升性能,这是我们的目的,这就是我们所谓的性能调优。 关于小表join大表的补充: 表join时的操作是这样的: 当操作到驱动表的某条记录时,就会全局扫描另一张表,寻找满足条件的记录,而当扫描它时,为了读取速度更快,一般都选先将它加载到内存,而内存的大小是有限的,为了不占据过多的内存或者避免内存溢出,加载进入内存的表一般是小表,即数据量比较小,map join就是这样做的。 即驱动表不放进内存,而另一张表(即要连接到驱动表的那一张表)就要先加载进内存,为了扫描速度更快,提高性能。 比如select * from a left outer join b on (a.key=b.key); 左外连接,驱动表是a,表b的记录是要被连接到表a的,所以每在a上连接一条记录就要被全局扫描一次的表是b,所以表b应先加载到内存(前提是表b是小表,如果是大表的话,估计会产生oom异常--out of memory内存溢出异常)。 select * from aa right outer join bb on (a.key=b.key); 右外连接,驱动表是bb,aa应先加载到内存(前提是小表)。 ps:希望我的分享能帮助到有需要的伙伴哦。我不是大神的哦,如果文中有误,还请大家不吝赐教,帮忙指正,谢谢了!!!

Hive是什么,Hive与关系型数据库的区别

全不同应用场景吧,HBase 速度比 Hive 快了不知道多少。HBase 是非关系型数据库(KV型), 对 key 做索引,查询速度非常快(相比较 Hive ),适合实时查询;而Hive是关系型数据结构,适合做后期数据分析。和单机的MySQL,Oracle比较的话,Hive的Hive是什么,Hive与关系型数据库的区别

如何进行hive优化

1.fetch抓取一些HQL语句,可以不翻译为MR程序,而是使用FetchTask来运行,拉取数据!启用了fetch抓取,可以节省某些HQL语句的查询效率!默认fetch抓取的设置是开启的,为morehive.fetch.task.conversion=more2.表的Join2.1表Join的顺序在hive中,不管是 大表 join 小表还是 小表 Join 大表,hive都可以自动优化!2.2 大表之间的Join在MR中ReduceJoin的原理:Map阶段①ReduceTask可以启动任意数量,必须保证关联字段相同的分到同一个区关联字段相同的数据,才能分到同一个ReduceTask②数据源有两种不同类型的文件,都使用同一个map处理逻辑!因此在map()需要根据切片的来源,进行判断,从而进行不同的封装逻辑的选择!③Mapper中封装数据的bean,应该可以覆盖不同类型文件中的所有字段④需要在bean中打标记,标记bean封装的是哪个文件中的数据只需要将order.txt中的数据进行替换后输出!Reduce阶段⑤在reduce()中,根据数据的标记进行分类分为order.txt中的数据和pd.txt中的数据⑥在cleanup()中,只讲order.txt中的数据,替换后写出左外连接,如果左表A表中有大量的c字段的值为null的数据,如果不对null的数据进行过滤,此时会产生数据倾斜!

如何通俗地理解Hive的工作原理

Hive是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类 SQL 查询语言,称为 HQL,它允许熟悉 SQL 的用户查询数据。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作。流程大致步骤为:1. 用户提交查询等任务给Driver。2. 编译器获得该用户的任务Plan。3. 编译器Compiler根据用户任务去MetaStore中获取需要的Hive的元数据信息。4. 编译器Compiler得到元数据信息,对任务进行编译,先将HiveQL转换为抽象语法树,然后将抽象语法树转换成查询块,将查询块转化为逻辑的查询计划,重写逻辑查询计划,将逻辑计划转化为物理的计划(MapReduce), 最后选择最佳的策略。5. 将最终的计划提交给Driver。6. Driver将计划Plan转交给ExecutionEngine去执行,获取元数据信息,提交给JobTracker或者SourceManager执行该任务,任务会直接读取HDFS中文件进行相应的操作。7. 获取执行的结果。8. 取得并返回执行结果。

hive 里的时间是什么数据类型

HIVE里有两种时间类型:DATE类和TIMESTAMP类DATE类保存形如‘2017-05-0500:00:00.000"这种数据,TIMESTAMP保存的是一个10位的整数,即UNIX系统下的时间戳记法。可以通过from_unixtime()和unix_timestamp()函数互相转换。当然你也可以直接存成string格式。

Hive解析Json数据

HIVE直接读入json的函数有两个: (1)get_json_object(string json_string, string path) 返回值: string 说明:解析json的字符串json_string,返回path指定的内容。如果输入的json字符串无效,那么返回NULL。 举例: hive> select get_json_object(‘{“store”:{“fruit”:[{"weight":8,"type":"apple"},{"weight":9,"type":"pear"}], “bicycle”:{“price”:19.95,”color”:”red”}}, “email”:”amy@only_for_json_udf_ test.net ”, “owner”:”amy” } ‘,"$.owner") from dual; 结果:amy 这个函数每次只能返回一个数据项。 (2)json_tuple(jsonStr, k1, k2, ...) 参数为一组键k1,k2……和JSON字符串,返回值的元组。该方法比 get_json_object 高效,因为可以在一次调用中输入多个键 select a.timestamp, b.* from log a lateral view json_tuple(a.appevent, "eventid", "eventname") b as f1, f2; 处理数据样例: {"GPS_LAT":39.8965125,"GPS_LONG":116.3493225,"GPS_SPEED":20.9993625,"GPS_STATE":"A","GPS_TIME":"2014-01-02 00:00:16","IMEI":"508597","after_oxygen_sensor":132,"air_condion_state":3,"bdoneNo_after_mileage":0,"bdoneNo_zero_mileage":8044,"db_speed":22,"direction_angle":358.2585,"front_oxygen_sensor":64,"instant_fuel":233,"speed":1210,"torque":33,"total_fuel":0} 处理HIVE语句: create table 2014jrtest as select json_tuple(line,"GPS_LAT","GPS_LONG","GPS_SPEED","GPS_STATE","GPS_TIME","IMEI","after_oxygen_sensor","air_condion_state","bdoneNo_after_mileage","bdoneNo_zero_mileage","db_speed","direction_angle","front_oxygen_sensor","instant_fuel","speed","torque","total_fuel") from 2014test;

hive能存储数据吗

1、首先,Hive没有专门的数据存储格式,也没有为数据建立索引,用户可以非常自由的组织Hive中的表,只需要在创建表的时候告诉Hive数据中的列分隔符和行分隔符,Hive就可以解析数据。2、第hive本身是不存储数据的,不论外表、内表,hive的所有数据是存放在hdfs文件系统的。3、hadoop是一个分布式的软件处理框架,hive是一个提供了查询功能的数据仓库,而hadoop底层的hdfs为hive提供了数据存储。hive将用户提交的SQL解析成mapreduce任务供hadoop直接运行,结合两者的优势,进行数据决策。4、国内最常用的是一款基于Hadoop的开源数据仓库,名为Hive,它可以对存储在HDFS的文件数据进行查询、分析。Hive对外可以提供HiveQL,这是类似于SQL语言的一种查询语言。5、Pig与HIVE工具类似,都可以用类sql语言对数据进行处理。但是他们应用场景有区别,Pig用于数据仓库数据的ETL,HIVE用于数仓数据分析。

Hive 分区字段限制

hivesql分区字段不可以有中文,否则会报错如下: Failed with exception MetaException(message:javax.jdo.JDOException: Exception thrown when executing query : SELECT DISTINCT "org.apache.hadoop.hive.metastore.model.MPartition" AS NUCLEUS_TYPE , A0 . CREATE_TIME , A0 . LAST_ACCESS_TIME , A0 . PART_NAME , A0 . PART_ID FROM PARTITIONS A0 LEFT OUTER JOIN TBLS B0 ON A0 . TBL_ID = B0 . TBL_ID LEFT OUTER JOIN DBS C0 ON B0 . DB_ID = C0 . DB_ID WHERE B0 . TBL_NAME = ? AND C0 . NAME = ? AND A0 . PART_NAME = ? at org.datanucleus.api.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:677) at org.datanucleus.api.jdo.JDOQuery.executeInternal(JDOQuery.java:388) at org.datanucleus.api.jdo.JDOQuery.execute(JDOQuery.java:252) at org.apache.hadoop.hive.metastore.ObjectStore.getMPartition(ObjectStore.java:1607) at org.apache.hadoop.hive.metastore.ObjectStore.getPartitionWithAuth(ObjectStore.java:1875) at org.apache.hadoop.hive.metastore.ObjectStoreWithBIMapping.getPartitionWithAuth(ObjectStoreWithBIMapping.java:341) at org.apache.sentry.binding.hive.v2.metastore.AuthorizingObjectStoreV2WithBIMapping.getPartitionWithAuth(AuthorizingObjectStoreV2WithBIMapping.java:218) at org.apache.sentry.binding.hive.v2.metastore.MTAuthorizingObjectStoreV2WithBIMapping.getPartitionWithAuth(MTAuthorizingObjectStoreV2WithBIMapping.java:231) at sun.reflect.GeneratedMethodAccessor56.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.apache.hadoop.hive.metastore.RawStoreProxy.invoke(RawStoreProxy.java:114) at com.sun.proxy.$Proxy11.getPartitionWithAuth(Unknown Source) at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.get_partition_with_auth(HiveMetaStore.java:3311) at sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.apache.hadoop.hive.metastore.RetryingHMSHandler.invoke(RetryingHMSHandler.java:107) at com.sun.proxy.$Proxy13.get_partition_with_auth(Unknown Source) at sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.apache.hadoop.hive.metastore.HiveMetaStore$MetricHMSProxy.invoke(HiveMetaStore.java:6752) at com.sun.proxy.$Proxy13.get_partition_with_auth(Unknown Source) at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$Processor$get_partition_with_auth.getResult(ThriftHiveMetastore.java:9950) at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$Processor$get_partition_with_auth.getResult(ThriftHiveMetastore.java:9934) at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39) at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39) at org.apache.hadoop.hive.thrift.HadoopThriftAuthBridge$Server$TUGIAssumingProcessor$1.run(HadoopThriftAuthBridge.java:747) at org.apache.hadoop.hive.thrift.HadoopThriftAuthBridge$Server$TUGIAssumingProcessor$1.run(HadoopThriftAuthBridge.java:742) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:415) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1690) at org.apache.hadoop.hive.thrift.HadoopThriftAuthBridge$Server$TUGIAssumingProcessor.process(HadoopThriftAuthBridge.java:742) at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:286) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745) NestedThrowablesStackTrace: java.sql.SQLException: Illegal mix of collations (latin1_bin,IMPLICIT) and (utf8mb4_general_ci,COERCIBLE) for operation "=" at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:964)

hive使用什么作为用户开发接口

Hive是什么1)Hive是建立在Hadoop(HDFS/MR)上的用于管理和查询结果化/非结构化的数据仓库;2)一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制;3)Hive定义了简单的类SQL查询语言,称为HQL,它允许熟悉SQL的用户查询数据;4)允许用Java开发自定义的函数UDF来处理内置无法完成的复杂的分析工作;5)Hive没有专门的数据格式(分隔符等可以自己灵活的设定);ETL的流程(Extraction-Transformate-Loading):将关系型数据库的数据抽取到HDFS上,hive作为数据仓库,经过hive的计算分析后,将结果再导入到关系型数据库的过程。Hive是构建在Hadoop之上的数据仓库1)使用HQL作为查询接口;2)使用HDFS作为存储;3)使用MapReduce作为计算;Hive应用场景数据源:1)文件数据,如中国移动某设备每天产生大量固定格式的文件;2)数据库以上两种不同的数据源有个共同点:要使用hive,那么必须要将数据放到hive中;通常采用如下两种方式:1)文件数据:load到hive2)数据库:sqoop到hive数据的离线处理;hive的执行延迟比较高,因为hive常用于数据分析的,对实时性要求不高;hive优势在于处理大数据,对于处理小数据没有优势,因为hive的执行延迟比较高。处理数据存放在hive表中,那么前台系统怎么去访问hive的数据呢?先将hive的处理结果数据转移到关系型数据库中才可以,sqoop就是执行导入导出的操作

hive的介绍

hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

hive的元数据存储在derby和mysql中有什么区别(hive和mysql的区别通俗易懂)

hive的元数据如果放在derby,一般只能允许1个会话连接;而mysql则没有这个限制;为了共享知识,请点个赞支持下

hive基础语法

1:启动集群中所有的组件 cd /export/onekey ./start-all.sh 2:使用终端连接Hive 3:打开 beeline 前先输入以下命令 :star2: 在大数据中,最常用的一种思想就是分治,分区表实际就是对应hdfs文件系统上的的独立的文件夹,该文件夹下是 该分区所有数据文件。 :star2:分区可以理解为分类,通过分类把不同类型的数据放到不同的目录下。 :star2:Hive中可以创建一级分区表,也可以创建多级分区表 :star2:根据内外部表可区分出==分区内部表==、==分区外部表== 1.创建分区表 2.加载数据 1.可见分区字段会显示在表中,但是它并不是真实存在于表的字段 2.加载同一等级不同分区的数据 3.这时可以指定分区字段值当作筛选条件【分区表和where联动】 1.创建多级分区表 2.加载数据 1.加载同一等级不同分区的数据 2.指定分区字段值当作筛选条件【分区表和where联动】 定义 :Array是数组类型,Array中存放相同类型的数据。 语法: concat_ws(string SEP, string A, string B…) 说明:返回输入字符串连接后的结果,SEP表示各个字符串间的分隔符 举例: 语法: substr(string A, int start, int len), --start是顺序 substring(string A, int start, int len) -- start可以是逆序【即负数】 返回值: string 说明:返回字符串A从start位置开始,长度为len的字符串 举例: 语法: year(string date) 说明:返回日期中的年。 举例: 语法: date_add(string startdate, int days) 说明:返回开始日期startdate增加days天后的日期。 举例: 语法: date_sub (string startdate, int days) 返回值: string 说明:返回开始日期startdate减少days天后的日期。 举例: 行转列是指多行数据转换为一个列的字段。 Hive行转列用到的函数: concat_ws(sep, str1,str2) --以分隔符拼接每个字符串 collect_set(col) --将某字段的值进行去重汇总,产生array类型字段 示例: 生产中只用rank和dense_rank,row_number不合理 rank() 输出的排名 (1,2,3,3,5) dense_rank() 输出的排名 (1,2,3,3,4) 示例: 用于== 实现分组内所有和连续累积的统计 == Apache Zeppelin是一款基于Web交互式框架,支持多种语言,提供了== 数据分析 ==、 ==数据可视化== 功能。 使用Zeppelin来连接到Spark SQL的Thrift Server,可以以更直观的方式来查看Hive中的数据。而且Zeppelin也可以以图表的方式展示数据。 使用Zeppelin来连接到Spark SQL的Thrift Server的好处有两个: 1.原始日志数据会存放在临时存储层ODS层 2.预处理数据会放在数据仓库DW层 3.分析得到的结果数据放在应用层APP层 case有两种写法,但是只用记住第二种写法 case when then end :star: 解决办法来自: https://community.cloudera.com/t5/Support-Questions/hive-date-time-problem/td-p/139953 解决办法是,弃用date_format(),改用 == from_unixtime(unix_timestamp(b,"yyyy-MM-dd HH:mm")) == 适用于得出单独的年月日,比如hour(date_format(b,"yyyy-MM-dd")) 、year(date_format(b,"yyyy-MM-dd"))、month(date_format(b,"yyyy-MM-dd")) 不适用于时分秒函数内 适用于所有日期的情况,无论是年月日时分秒,在规整时间后就可以得到年月日时分秒

Hive常用命令

参数说明: EXTERNAL:创建外部表,在建表的同时可以指定源数据的路径(LOCATION),创建内部表时,会将数据移动到数据仓库指向的路径,若创建外部表不会有任何改变。在删除表时,内部表的元数据和源数据都会被删除,外部表不会删除源数据。 COMMENT:为表和列增加注释 PARTITIONED BY:创建分区表, ——PARTITIONED BY(dt STRING, country STRING) CLUSTERED BY:创建分桶表 SORTED BY:创建排序后分桶表(不常用) ——CLUSTERED BY(userid) SORTED BY(viewTime) INTO 32 BUCKETS ROW FORMAT DELIMITED:是用来设置创建的表在加载数据的时候,支持的列分隔符。Hive默认的分隔符是01,属于不可见字符,这个字符在vi里是^A —— ROW FORMAT DELIMITED FIELDS TERMINATED BY "01"; STORED AS:指定存储文件类型 sequencefile (二进制序列文件)、textfile(文本)、rcfile(列式存储格式文件)、ORC 如果文件数据是纯文本,可以使用 STORED AS TEXTFILE。 如果数据需要压缩,使用 STORED AS SEQUENCEFILE。 LOCATION:指定表在 hdfs 上的存储位置 注意:若是外部表,则还需要删除文件(hadoop fs -rm -r -f hdfspath) 注意:INPATH后面的文件路径不能和hive表路径在hdfs上一致,最好是两个不同的文件路径,在加载过程中,源路径下的文件会被移动到hive表所在路径下,如果一致,会找不到文件错误; Hive支持内置和自定义开发的文件格式。以下是Hive内置的一些格式: 默认是文本格式. textfile 存储空间消耗比较大,并且压缩的text 无法分割和合并查询的效率最低,可以直接存储,加载数据的速度最高. sequencefile 存储空间消耗最大,压缩的文件可以分割和合并查询效率高,需要通过text文件转化来加载. rcfile 存储空间最小,查询的效率最高 ,需要通过text文件转化来加载,加载的速度最低. 相比传统的行式存储引擎,列式存储引擎具有更高的压缩比,更少的IO操作而备受青睐(注:列式存储不是万能高效的,很多场景下行式存储仍更加高效),尤其是在数据列(column)数很多,但每次操作仅针对若干列的情景,列式存储引擎的性价比更高。
 首页 上一页  1 2 3 4  下一页  尾页