大数据技术
文章平均质量分 58
学习、工作中大数据技术相关总结分享
Sin_Geek
Lovelife
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LINUX通过python连接ACCESS(.mdb和.accdb文件)数据库
前言因为ACCESS主要还是微软的那一套,所以WIN平台的连接方式不再赘述,网上方案很多。LINUX上的连接,主要还是分为ODBC和JDBCODBC方案包安装linux需安装的包:mdbtools, unixODBC, libmdbodbcpython需安装的包:pyodbc或pypyodbc配置配置/etc/odbcinst.ini[MDBToolsODBC]Descript...原创 2020-01-19 15:09:48 · 4256 阅读 · 0 评论 -
Container killed on request. Exit code is 143
背景只是一条INSERT语句插入一条数据,然后就报错报错如下Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.tez.TezTask分析之前写过这个错误,这只是个表象错误,具体问题还是需要看日志分析。Z正常日志里没有报错,在这个任务的一个POST日志文件中发现如下报错Container contai...原创 2020-01-08 18:31:59 · 5765 阅读 · 0 评论 -
impala精度修改问题
背景因上游数据精度发生变化,需相应调整大数据的精度,直接进行调整后,HIVE没有问题,但impala无法正常查询修改后的表,报错为column 'XXX' has an invalid type length分析&试验最开始以为是HIVE元数据的问题,因为是分区表怀疑历史分区相关信息没有变更,然后去HIVE元数据库查,结果元数据信息是一样的。然后网上去查资料,度娘真的啥也不知道啊...原创 2019-08-20 09:09:11 · 3422 阅读 · 0 评论 -
hive explode与lateral view小记
之前也经常用到这两个函数,一般都是两个一起使用,没有区分这两个函数的区别。最近在用的时候,查了下还是在这里记录一下。explodeexplode函数作用就是将hive一行中复杂的array或者map结构拆分成多行。lateral viewlateral view与用户定义的表生成函数一起使用,如explode函数,为了解决UDTF不允许在select字段的问题。UDTF为每个输入行生成零...原创 2019-05-24 14:51:13 · 657 阅读 · 0 评论 -
hive中关键字作为列名的方法
背景上游系统表字段名是HIVE的关键字,但是抽取到大数据平台时,需要贴源,即不改变上游表结构,需保留该字段名。方法使用反单引号,一般为键盘ESC的下方,数字键1的左边,与~符号同一个键的返单引号键`SELECT `COMMENT` FROM TEST;...原创 2019-06-18 08:18:40 · 6483 阅读 · 0 评论 -
HDFS Standby NameNode 启动问题
背景运行中的环境,平台发现告警NameNode Directory Status报警,具体为Failed directory count: 1,不影响使用,然后第二天晚上又发生Last Checkpoint的报错,查看HDFS Standby NameNode节点日志发现Exception in doCheckpoint,然后直接重启该Namenode,就发现重启失败,错误提示为NameNode...原创 2019-04-26 12:27:50 · 1802 阅读 · 0 评论 -
Sqoop export 导出推数详解
前言因为工作上用到sqoop从hive导出数据到关系型数据库,所以学习了下sqoop导出的具体功能,因除官网外(全英文,可能部分人不喜欢看英文),没有特别好的资料,在此整理总结下自己关注的一些东西。环境说明,sqoop 1.4.6,先按照导出到mysql进行总结。命令参数主要整理可能用到的参数,不包含所有参数,有需要可以自行去官方查看~~eval可使用SQL语句对关系数据库进行操作。后面...原创 2019-04-03 09:31:00 · 7053 阅读 · 0 评论 -
Hive分区表新增字段值为NULL
背景对于HIVE分区表通过add column添加字段,向已存在分区中插入数据,结果新增字段的值全部为null。 已存在分区会产生该问题,新分区不会产生该问题。原因实际上数据是插入成功的。HDFS上的数据更新了,但是我们查询的时候仍然查询的是旧的元数据信息(即Mysql中的信息)官方解释如下:Change Column Name/Type/Position/CommentALTER T...原创 2019-03-08 14:31:19 · 974 阅读 · 0 评论 -
Type DECIMAL is not supported in Kudu问题
背景使用IMPALA创建KUDU表的时报错。建表语句如下CREATE TABLE MY.TESTDECIMAL(ID INT PRIMARY KEY,AMT DECIMAL(18,2) )PARTITION BY HASH PARTITIONS 2STORED AS KUDU; 报错信息如下:Type DECIMAL(18,2) is not supported in Ku...原创 2019-03-06 11:37:48 · 1628 阅读 · 0 评论 -
Sqoop执行时的权限问题
错误信息如下:Permission denied: user=xxx,access=WRITE,inode="/user/xxx/.staging":hdfs:hdfs:drwxr-xr-x解决方法如下:hadoop fs -ls /user 查看目录然后又有两种可选1、切换到其中的用户2、赋权限 hadoop fs -chmod 777 /user/xxx(用哪个用户执行的,报哪...原创 2019-01-31 15:00:55 · 3456 阅读 · 0 评论 -
sqoop推数数据错误问题
背景在项目中使用sqoop往oracle推小数的时候发生数据异常的情况原因sqoop使用的oracle jdbc包版本太低,项目使用的是oracle 11g的版本,sqoop里的jdbc包是ojdbc14,是针对oracle 10的版本,针对11g版本至少是ojdbc5.方案直接换成ojdbc7,解决。...原创 2019-01-31 10:16:46 · 580 阅读 · 0 评论 -
Pyhive连接impala执行sql的问题
背景使用pyhive连接impala并执行sql语句,发现总是sql执行总是异常。原因经过跟踪源代码发现,pyhive执行sql的函数execute(),虽然指定了同步执行,但是同步只适用于执行hive的sql,对于impala来说,并没有起作用,导致实际执行的impala sql为异步的,则会出现异常情况。方案可人为判断sql执行情况,实现同步执行。通过poll()函数,获取TOpe...原创 2019-01-28 08:25:16 · 1752 阅读 · 0 评论 -
impala报错NoSuchMethodError: org.apache.hadoop.hive.metastore.MetaStoreUtils.updatePartitionStatsFast
背景在使用impala往表的新分区写数据时报错NoSuchMethodError: org.apache.hadoop.hive.metastore.MetaStoreUtils.updatePartitionStatsFast(Lorg/apache/hadoop/hive/metastore/api/Partition;Lorg/apache/hadoop/hive/metastore/W...原创 2019-01-09 16:09:05 · 2323 阅读 · 0 评论 -
Apache Kudu 的事务概念
Kudu 旨在最终完全获得 ACID ,但是多 tablet 事务尚未实施。最终 Kudu 将支持完全严格的可序列化语义。事实上,它已经在有限的范围内,但并不是所有的角落都被覆盖,因为这仍然是一个正在进行的工作。Kudu 目前允许以下操作:Write operations是在具有多个副本的单个 tablet 中,插入、更新或删除的 sets of rows ( 行集 )。写操作没有单独的 “...原创 2019-01-09 14:54:41 · 2404 阅读 · 0 评论 -
Impala create file /tmp/impala-scratch 报错
背景使用impala对大数据量进行处理时出现如下错误Create file /tmp/impala-scratch/XXX failed with errno=2 description=Error(2): No such file or directory原因查资料发现impala在大数据量处理时会用到磁盘保存中间数据By default, intermediate files us...原创 2019-01-09 08:18:12 · 1492 阅读 · 0 评论 -
Kudu模式设计
Kudu 表具有与传统 RDBMS 中的表类似的结构化数据模型。模式设计对于实现 Kudu 的最佳性能和运行稳定性至关重要。每个工作负载都是独一无二的,没有一个最合适每个表的单一模式设计。在高层次上,创建 Kudu 表有三个问题:列设计,主键设计和分区设计。其中只有分区对于熟悉传统的非分布式关系数据库的人来说将是一个新的概念。The Perfect Schema (完美的模式)完美的模式将完成...原创 2019-01-02 08:34:00 · 1327 阅读 · 0 评论 -
KUDU和IMPALA的结合使用
Kudu 与 Apache Impala紧密集成,允许使用 Impala 的 SQL 语法从 Kudu tablets 插入,查询,更新和删除数据。此外,还可以用 JDBC 或 ODBC, Impala 作为代理连接 Kudu 进行数据操作。配置Kudu 内不需要进行配置更改,从而可以访问 Impala 。建议配置 Impala 与 Kudu Master servers 的位置:在 Imp...原创 2018-12-28 08:54:00 · 10711 阅读 · 0 评论 -
KUDU架构原理
基本概念Tabletable 是数据存储在 Kudu 的位置,具有 schema 和全局有序的 primary key。table 被分成称为 tablets 的 segments。Tablet一个 tablet 是一张 table 连续的 segment,与其它数据存储引擎或关系型数据库中的 partition(分区)相似。给定的 tablet 冗余到多个 tablet 服务器上,并且在...原创 2018-12-27 08:58:20 · 3077 阅读 · 1 评论 -
Impala查询不到hive数据
背景hive写入的数据,hive是可以查到数据,impala进行过元数据的刷新,然后查询此表,查询成功,返回结果是空表。原因写入数据的SQL里使用了UNION,导致HDFS目录结构多了一层,本来是分区底下直接是数据,使用了UNION后,有几个UNION,分区底下会出现几个文件夹,依次为1,2,3…,文件夹里面才是数据。导致Impala无法访问到具体数据。也许Imapla新版本解决了这个问题,...原创 2018-12-13 18:30:47 · 4520 阅读 · 0 评论 -
Impala实时刷新同步Hive元数据
背景通过HIVE对数据进行操作或更新元数据,Impala是无感知的,官方提供了两种手动刷新的方式,分别是INVALIDATE METADATA和REFRESH操作。但是使用起来相当不方便,针对此问题,想到两种简单的应对方案。方案一如果ETL处理都是通过脚本执行,那么可以考虑在脚本中添加手动刷新的命令,即某个表的数据已通过脚本处理完成,脚本的最后调用impala刷新一下这个表。这种方式无法处理...原创 2018-11-30 08:12:53 · 11513 阅读 · 5 评论 -
Impala 代替 hive COLLECT_SET函数的方式
背景之前是在HIVE上开发,GROUP BY 某些字段后,其他字段使用COLLECT_SET(ITEM)[0]的方式取相同字段值中的一个,而在Impala上没有COLLECT_SET函数。方案使用GROUP_CONCAT函数+SPLIT_PART函数替代## IMPALASELECT SCORE,SPLIT_PART(GROUP_CONCAT(NAME),',',1) FROM TEST...原创 2018-11-15 09:25:00 · 6857 阅读 · 0 评论 -
Hadoop dr.who问题
背景昨天在生产环境偶然发现,yarn的一些日志访问不了,报如下错误 User [dr.who] is not authorized to view the logs for application;然后发现hdfs管理界面有些文件目录页进不去,登录即右上角为logged in as dr.who。然后到网上查找资料。原因Resource Manager UI的默认用户dr.who权限不正确...原创 2018-11-14 08:28:56 · 8704 阅读 · 0 评论 -
Impala权限控制
开头Impala因为是Cloudera出的,所以官方文档说明里只写了使用自家的Sentry方式进行权限管理,而对于Hortonworks家的Ranger只字未提,网上都是说可以通过特殊方案集成到Ranger上,但是没有找到具体方案,在此也提不了了。首先,Sentry 的使用有两种方式,一是基于文件的存储方式(SimpleFileProviderBackend),一是基于数据库的存储方式(Sim...原创 2018-11-08 21:08:16 · 4604 阅读 · 0 评论 -
Sentry与Ranger
Sentry:RBAC(role-based acess control)基于角色的管理,比如Cloudera用的是Sentry,华为的FusionInsight也采用类似的机制。即:通过创建角色,将每个组件的权限授予给此角色。然后在用户中添加此角色,即用户具备此角色访问组件的权限(组也类似)Ranger: PBAC(policy-based acess control)基于策略的管理,比如H...原创 2018-11-07 22:15:06 · 1590 阅读 · 0 评论 -
Sqoop同步hive的parquet数据问题
目前通过Sqoop从Hive的parquet抽数到关系型数据库的时候会报kitesdk找不到文件的错,这是Sqoop的BUG,通过使用hcatlog的方式解决。ERROR sqoop.Sqoop: Got exception running Sqoop: org.kitesdk.data.DatasetNotFoundException: Descriptor location does not...原创 2018-11-06 08:23:39 · 3279 阅读 · 0 评论 -
Impala的数据刷新
Impala采用了比较奇葩的多个impalad同时提供服务的方式,并且它会由catalogd缓存全部元数据,再通过statestored完成每一次的元数据的更新到impalad节点上,Impala集群会缓存全部的元数据,这种缓存机制就导致通过其他手段更新元数据或者数据对于Impala是无感知的,例如通过hive建表,直接拷贝新的数据到HDFS上等,Impala提供了两种机制来实现元数据的更新,分别...原创 2018-10-28 14:52:04 · 5146 阅读 · 0 评论 -
HIVE视图VIEW
特点1、只有逻辑视图,没有物化视图;2、视图只能查询,不能Load/Insert/Update/Delete数据;3、视图在创建时候,只是保存了一份元数据,当查询视图的时候,才开始执行视图对应的那些子查询;优点降低查询复杂度当查询变得长或复杂的时候,通过使用视图将这个查询语句分割成多个小的、更可控的片段来降低复杂度。同在编程语言中使用函数或者软件设计中使用分层设计的思想是一致的。...原创 2018-10-13 19:45:52 · 4964 阅读 · 0 评论 -
Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.tez.TezTask问题解决
发现这个报错后,就网上查资料喽。目前看下来两种情况比较常见,不排除其他可能。一般排查方式也是查看hive日志,job日志在你的HIVEHOME/conf的hive?log4j.properties下的hive.log.dir={java.io.tmpdir}/user.name所指的目录下,如果日志使用的是默认的配置,则在主机的/tmp/user.name所指的目录下;当然我也是先进了看了这路径下...原创 2018-10-04 08:42:33 · 51803 阅读 · 13 评论 -
DbVisualizer连接Hbase(Phoenix驱动)
最近想通过图形界面访问操作hbase,之前hive等都是用的DbVisualizer,所以也想配置一下。首先说明,是利用Phoenix连接hbase,本人的Phoenix和Hbase是已安装并配置好的,所以安装及配置过程在此省略。主要总结下搜索的资料及碰到问题的解决。驱动JAR包1、phoenix官方提供了驱动jar包下载,需根据Phoenix版本和hbase版本选择相应的版本,驱动只需添加p...原创 2018-09-26 19:41:48 · 3197 阅读 · 4 评论 -
TEZ深入理解
简介Tez是Apache最新的支持DAG作业的开源计算框架,它可以将多个有依赖的作业转换为一个作业从而大幅提升DAG作业的性能。Tez并不直接面向最终用户——事实上它允许开发者为最终用户构建性能更快、扩展性更好的应用程序。Hadoop传统上是一个大量数据批处理平台。但是,有很多用例需要近乎实时的查询处理性能。还有一些工作则不太适合MapReduce,例如机器学习。Tez的目的就是帮助Hadoop...原创 2018-09-20 15:27:05 · 8684 阅读 · 0 评论 -
HDFS Live Nodes缺少节点问题处理
背景最近因为集群中的一个节点挂掉了(Linux系统挂了),所以从另外一个节点把所有文件重新拷贝了一份到这个节点上。然后常规启动集群后,发现所有数据节点都已正常启动,但通过web页面查看http://master:50070,在Live Node里缺少了这台之前挂掉的节点,因为是整体拷贝,所以包括HDFS的元数据信息也是一模一样的,造成冲突。原因分析1、找到配置文件hdfs-site.xml...原创 2018-09-20 09:01:56 · 1851 阅读 · 0 评论 -
HDFS空间优化
1 HDFS存档/归档存档是用来备份的时候标识用的,说白就是做个标记,表示这个文档在上次备份之后有没有被修改过,比如当月1号,你给全盘做了一次备份,那么所有的文档的存档属性都会被清除,表示备份过了。此后,如果你修改了某个文件,那么这个文件的存档属性就会被加上。当几天后,你再做“增量”备份时候,系统就会只备份那些具有“存档”属性的文件。每个文件均按块方式存储,每个块的元数据存储在nameno...原创 2018-09-17 10:17:48 · 1338 阅读 · 0 评论 -
HDFS深入理解
本文参考《Hadoop权威指南》与网上相关资料整理完成1 HDFS简介HDFS(Hadoop Distributed File System)是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开发的,可以运行于廉价的商用服务器上。它所具有的高容错、高可靠性、高可扩展性、高获得性、高吞吐率等特征为海量数据提供了不怕故障的存储,为超...原创 2018-09-14 17:29:44 · 1161 阅读 · 0 评论 -
HIVE 编程指南笔记
不一样的插入数据Hive提供一种特别的INSERT语法。其SQL栗子如下:FROM CMB_A AINSERT INTO TABLE CMB_BPARTITION (DT = '20180331')SELECT * WHERE A.DATE = '20180331'INSERT OVERWRITE TABLE CMB_CPARTITION (DT = '20180401')...原创 2018-03-31 20:34:47 · 450 阅读 · 0 评论 -
hive向elasticsearch写数据
一、添加依赖包首先确定elasticsearch的版本,若es版本为6.1.2,可用jar包:elasticsearch-hadoop-6.1.2.jar,网上有说只要高于6.1.2版本的jar包即可(自行验证)。当报httpclient相关错误时,还需要添加org.apache.commons.httpclient这个jar包。 首先进入hive,然后通过下面命令添加依赖包。add j...原创 2018-02-25 17:02:31 · 3700 阅读 · 0 评论 -
BMC Control-M Client安装问题及解决方法
安装问题本人安装的是BMC Control-M Client V9版本,已安装.net 4.5.2,还是提示缺少.net 4.5.2。 原因Control-M客户端安装的时候调用批处理命令”REG QUERY”去检查.Net的版本。如果注册表中.Net的路径损坏或者包含空格或引号就导致检查失败。但是本人检查过.Net路径键值正常,批处理命令也考虑到了空格和引号的问题,但是还是不能通过。解决方法具体原创 2017-11-01 21:03:28 · 5276 阅读 · 0 评论 -
impala drop删除表注意问题
背景在使用impala drop表然后新建该表再插入数据时,发现以前的数据还在里面。drop和create过程都没有报错。。。实际分析发现,drop表后再select报错,报表不存在,但实际应该是删除了映射关系,但是hdfs上的文件并没有删掉,然后新建表后,再插入数据,数据又写入到了以前的文件里,造成该现象。处理方案impala 在执行 drop table 操作时,需要把文件移到到 h...原创 2019-09-26 14:16:31 · 3957 阅读 · 0 评论 -
hive where过滤条件中数值比较注意问题
背景hive版本1.2.1问题where过滤条件中很多条件,其中包含了数值比较情况,当时开发人员没注意写的是a=0.01进行比较,a为数值型,造成过滤条件不生效的情况。单独是用a=0.01可以,但是在复杂条件下会出现问题。在impala中执行同样的sql却不会有问题,说明hive本身对数值比较的处理方式跟impala不同。解决数值型字段比较最好还是避免等值比较,还是采用相加相减在一定精...原创 2019-09-26 09:46:43 · 2747 阅读 · 0 评论 -
hive函数to_unix_timestamp与unix_timestamp效率问题
可怕,hive版本1.2.1,实践中发现,to_unix_timestamp比unix_timestamp函数快几十甚至上百倍!!!原创 2019-09-25 08:27:46 · 4426 阅读 · 1 评论 -
hive的between-and问题
背景hive版本1.2.1存储格式parquet筛选字段为STRING类型的日期,如’20190918’时出现不包含头尾的现象。实验先分别创建parquet格式T1表与textfile格式的T2表,CREATE TABLE IF NOT EXISTS TEMP.t1(a STRING ) Partitioned by (BDW_Data_Dt STRING)Stored ...原创 2019-09-19 09:18:32 · 22378 阅读 · 0 评论