问题重现 select id from big_table where name = 'sdlkfjalksdjfla' limit 100; 首先看执行计划: hive> explain select * from big_table where name = 'sdlkfjalksdjfla' limit 100; OK STAGE DEPENDENCIES: Stage-0 is a root stage STAGE PLANS: Stage: Stage-0     Fetch Oper…
前言 之前也分享过很多工作中踩坑的经验: 一个线上问题的思考:Eureka注册中心集群如何实现客户端请求负载及故障转移? [原创]经验分享:一个Content-Length引发的血案(almost....) 今天再来分享工作中一个真实的案例: 商品评价列表页,显示每条用户的评价详情,为了保护用户隐私,要求显示用户昵称时只能显示第一位和最后一位,其他的用※代替. 例如输入:,输出:*** 看似一个平淡无奇的需求,我也没有太在意.服务端将用户的评论信息存储到db中,评价列表接口就是将数据库中该商品的…
Hive优化-大表join大表优化 5.大表join大表优化 如果Hive优化实战2中mapjoin中小表dim_seller很大呢?比如超过了1GB大小?这种就是大表join大表的问题.首先引入一个具体的问题场景,然后基于此介绍各自优化方案. 5.1.问题场景 问题场景如下: A表为一个汇总表,汇总的是卖家买家最近N天交易汇总信息,即对于每个卖家最近N天,其每个买家共成交了多少单,总金额是多少,假设N取90天,汇总值仅取成交单数. A表的字段有:buyer_id.seller_id.pay_c…
hive通过外部表读写elasticsearch数据,和读写hbase数据差不多,差别是需要下载elasticsearch-hadoop-hive-6.6.2.jar,然后使用其中的EsStorageHandler: Connect the massive data storage and deep processing power of Hadoop with the real-time search and analytics of Elasticsearch. The Elasticsea…
在hive中创建外部表: CREATE EXTERNAL TABLE hive_hbase_table(key string, name string,desc string) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES("hbase.columns.mapping" = ":key,columfamily:name,columnfamily:desc&qu…
在hive中查看表结构时中文注释乱码,分为两种情况,一种是desc $table,一种是show create table $table 1 数据库字符集 检查 mysql> show variables like '%char%';mysql> show create table COLUMNS_V2;mysql> show create table TABLE_PARAMS; 修改 mysql> alter database hive character set latin1;…
限于iOS AppStore的审核机制,一些新的功能的添加或者bug的修复,想做些节日专属的活动等,几乎都是不太可能的.从已有的经验来看,也是有了一些比较常用的解决方案.本文先是会简单说明对比大部分方案,然后会注重阐述基于JSPatch的在线更新机制的设计和实现.对于任何一家有一定用户基础的iOS应用来说,在线更新技术所产生的直接和间接价值都将远远超过100W.理解,并掌握它;实在没有时间,就记住它,因为这篇文章不仅仅是讨论. 实例地址:https://github.com/ios122/ios…
分区是在处理大型事实表时常用的方法.分区的好处在于缩小查询扫描范围,从而提高速度.分区分为两种:静态分区static partition和动态分区dynamic partition.静态分区和动态分区的区别在于导入数据时,是手动输入分区名称,还是通过数据来判断数据分区.对于大数据批量导入来说,显然采用动态分区更为简单方便. - 对现存hive表的分区 首先,新建一张我们需要的分区以后的表create table like 'origin' 若现存hive表中没有分区信息,我们需要手动修改hive…
呼叫结果(call_result)与销售历史(sale_history)的join优化: CALL_RESULT: 32亿条/444G SALE_HISTORY:17亿条/439G 原逻辑 Map: 3255 Reduce: 950 Cumulative CPU: 238867.84 sec HDFS Read: 587550313339 HDFS Write: 725372805057 SUCCESS 28.1MIN 开启中间结果压缩 set hive.exec.compress.interm…
hive及其他组件(比如spark.impala等)都会依赖hive metastore,依赖的配置文件位于hive-site.xml hive metastore重要配置 hive.metastore.warehouse.dirhive2及之前版本默认为/user/hive/warehouse/,创建数据库或表时会在该目录下创建对应的目录 javax.jdo.option.ConnectionURLjavax.jdo.option.ConnectionDriverNamejavax.jdo.o…
常用格式 textfile 需要定义分隔符,占用空间大,读写效率最低,非常容易发生冲突(分隔符)的一种格式,基本上只有需要导入数据的时候才会使用,比如导入csv文件: ROW FORMAT DELIMITED FIELDS TERMINATED BY '\u0001' LINES TERMINATED BY '\n' STORED AS TEXTFILE json hive3.0后官方支持json格式,之前需要使用第三方,导入jar,http://www.congiu.net/hive-json…
hive执行sql提交到yarn上的任务名字是被处理过的,通常只能显示sql的前边一段和最后几个字符,这样就会带来一些问题: 1)相近时间提交了几个相近的sql,相互之间无法区分: 2)一个任务有问题,想看下这个任务具体执行的是什么?是谁的任务? 通过以下方法可以查看: 1)如果任务正在running,进入yarn的ApplicationMaster页面,进入job,点击configuration,右上角过滤框输入“hive.query.string”即可,如图: 2)如果任务已经结束,进入hi…
hive建表后直接将数据文件拷贝到table目录下,select * 可以查到数据,但是select count(1) 一直返回0,这个是因为hive中有个配置 hive.stats.autogather=true Enables automated gathering of table-level statistics for newly created tables and table partitions, such as tables created with the INSERT OV…
cdh5.16.1使用的hive版本是hive-1.1.0+cdh5.16.1+1431,详见:https://www.cloudera.com/documentation/enterprise/release-notes/topics/cdh_vd_cdh_package_tarball_516.html如果想将直接使用之前已有的hive metastore的数据库,比如hive1.2,要做如下操作: 1)修改元数据的version mysql> update VERSION set sche…
hive和mysql数据互导,首先想到的是sqoop,并且可以和调度框架(比如oozie等)配合配置定时任务,还有一种更简单的方式是通过spark-sql: CREATE OR REPLACE TEMPORARY VIEW tmp_tbl_test USING org.apache.spark.sql.jdbc OPTIONS ( url "jdbc:mysql://1.1.1.1:3306/db_test?useUnicode=true&characterEncoding=utf-8&…
spark 2.4 spark sql中执行 set hive.exec.max.dynamic.partitions=10000; 后再执行sql依然会报错: org.apache.hadoop.hive.ql.metadata.HiveException: Number of dynamic partitions created is 1001, which is more than 1000. To solve this try to set hive.exec.max.dynamic.p…
Hive或spark中执行sql字符常量包含;时会报错,比如 select instr('abc;abc', ';'); 报错 NoViableAltException(-1@[147:1: selectExpression : ( expression | tableAllColumns );]) 需要将;改为ascii select instr('abc\073abc', '\073');…
spark 2.4.3 spark读取hive表,步骤: 1)hive-site.xml hive-site.xml放到$SPARK_HOME/conf下 2)enableHiveSupport SparkSession.builder.enableHiveSupport().getOrCreate() 3) 测试代码 val sparkConf = new SparkConf().setAppName(getName) val sc = new SparkContext(sparkConf)…
从impala中创建kudu表之后,如果想从hive或spark sql直接读取,会报错: Caused by: java.lang.ClassNotFoundException: com.cloudera.kudu.hive.KuduStorageHandler at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424…
内部表和外部表最主要的一个差别就是删除表或者删除分区时,底层的文件是否自动删除,内部表会自动删除,外部表不会自动删除,所以基础数据表一定要用外部表,即使误删表或分区之后,还可以很容易的恢复回来. 虽然外部表可以恢复,但是逐个分区恢复也很累,如果你的分区很多,或者有多级分区的时候 alter table test_table add partition (partition_key='partition_value') 更简单的方式是执行 msck repair table test_table…
cloudera manager安装hue后想开启访问mysql(librdbms)需要在这里配置(hue_safety_valve.ini) 添加配置如下 [librdbms] # The RDBMS app can have any number of databases configured in the databases # section. A database is known by its section name # (IE sqlite, mysql, psql, and o…
spark sql执行insert overwrite table时,写到新表或者新分区的文件个数,有可能是200个,也有可能是任意个,为什么会有这种差别? 首先看一下spark sql执行insert overwrite table流程: 1 创建临时目录,比如 .hive-staging_hive_2018-06-23_00-39-39_825_3122897139441535352-2312/-ext-10000 2 将数据写到临时目录: 3 执行loadTable或loadPartiti…
今天遇到一个问题,spark应用中在一个循环里执行sql,每个sql都会向一张表写入数据,比如 insert overwrite table test_table partition(dt) select * from test_table_another; 除了执行sql没有其他逻辑,每个sql都会对应1个job,在spark web ui上看到job和job之间会停顿几分钟,并且非常有规律,任何两个job之间都会停顿,是不是很神奇? 答案揭晓: spark在执行insert overwrit…
一 问题 在hive1.2中使用hive或者beeline执行sql都有进度信息,但是升级到hive2.0以后,只有hive执行sql还有进度信息,beeline执行sql完全silence,在等待结果的过程中完全不知道执行到哪了 1 hive执行sql过程(有进度信息) hive> select count(1) from test_table;WARNING: Hive-on-MR is deprecated in Hive 2 and may not be available in the…
之前讨论过hive中limit的实现,详见 https://www.cnblogs.com/barneywill/p/10109217.html下面看spark sql中limit的实现,首先看执行计划: spark-sql> explain select * from test1 limit 10;== Physical Plan ==CollectLimit 10+- HiveTableScan [id#35], MetastoreRelation temp, test1Time taken…
spark 2.1.1 hive正在执行中的sql可以很容易的中止,因为可以从console输出中拿到当前在yarn上的application id,然后就可以kill任务, WARNING: Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or usin…
通过oozie job id可以查看流程详细信息,命令如下: oozie job -info 0012077-180830142722522-oozie-hado-W 流程详细信息如下: Job ID : 0012077-180830142722522-oozie-hado-W --------------------------------------------------------------------------------------------------------------…
当hdfs空间不足时,除了删除临时数据或垃圾数据之外,还可以适当调整部分大目录的副本数量,多管齐下: 1 查看 $ hdfs dfs -ls /user/hive/warehouse/temp.db/test_ext_o-rwxr-xr-x 3 hadoop supergroup 44324200 2019-02-28 16:36 /user/hive/warehouse/temp.db/test_ext_o/000000_0 权限后边的3即为副本数量 2 修改 $ hadoop fs -set…
建表语句 CREATE EXTERNAL TABLE `my_lzo_table`(`something` string)ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS INPUTFORMAT 'com.hadoop.mapred.DeprecatedLzoTextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputForma…
CM金丝雀Canary报错 1 HDFS 金丝雀Canary 测试无法为 /tmp/.cloudera_health_monitoring_canary_files 创建父目录. 2 Hive Metastore CanaryHive Metastore canary 创建 hue hdfs 主目录失败. 检查: 1)hdfs是否处于safemode,正常是off # hdfs dfsadmin -safemode getSafe mode is OFF 2)hdfs datanode是否健康,…