hive初始化失败hive streaming是什么么意思

出处:http://blog.csdn.net
Hive 0.11 包含了Hive Server 1 和 Hive Server 2,还包含1的原因是为了做到向下兼容性。从长远来看都会以Hive Server 2作为首选
1. 配置hive server监听端口和Host
&property&
&name&hive.server2.thrift.port&/name&
&value&10000&/value&
&/property&
&property&
&name&hive.server2.thrift.bind.host&/name&
&value&test84.hadoop&/value&
&/property&
2. 配置kerberos认证,这样thrift client与hive server 2, hive server 2和hdfs 都由kerberos作认证
&property&
&name&hive.server2.authentication&/name&
&value&KERBEROS&/value&
&description&
Client authentication types.
NONE: no authentication check
LDAP: LDAP/AD based authentication
KERBEROS: Kerberos/GSSAPI authentication
CUSTOM: Custom authentication provider
(Use with property hive.server2.custom.authentication.class)
&/description&
&/property&
&property&
&name&hive.server2.authentication.kerberos.principal&/name&
&value&hadoop/_&/value&
&/property&
&property&
&name&hive.server2.authentication.kerberos.keytab&/name&
&value&/etc/hadoop.keytab&/value&
&/property&
3. 设置impersonation,这样hive server会以提交用户的身份去执行语句,如果设置为false,则会以起hive server daemon的admin user来执行语句
&property&
&name&hive.server2.enable.doAs&/name&
&value&true&/value&
&/property&
执行命令$HIVE_HOME/bin/hive --service hiveserver2 会调用org.apache.hive.service.server.HiveServer2的main方法
log中输出日志信息如下:
14:59:21,081 INFO
server.HiveServer2 (HiveStringUtils.java:startupShutdownMessage(604)) - STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting HiveServer2
STARTUP_MSG:
host = test84.hadoop/10.1.77.84
STARTUP_MSG:
STARTUP_MSG:
version = 0.11.0
STARTUP_MSG:
classpath = 略.................
14:59:21,957 INFO
security.UserGroupInformation (UserGroupInformation.java:loginUserFromKeytab(633)) - Login successful for user hadoop/test84. using keytab file /etc/hadoop.keytab
14:59:21,958 INFO
service.AbstractService (AbstractService.java:init(89)) - Service:OperationManager is inited.
14:59:21,958 INFO
service.AbstractService (AbstractService.java:init(89)) - Service:SessionManager is inited.
14:59:21,958 INFO
service.AbstractService (AbstractService.java:init(89)) - Service:CLIService is inited.
14:59:21,959 INFO
service.AbstractService (AbstractService.java:init(89)) - Service:ThriftCLIService is inited.
14:59:21,959 INFO
service.AbstractService (AbstractService.java:init(89)) - Service:HiveServer2 is inited.
14:59:21,959 INFO
service.AbstractService (AbstractService.java:start(104)) - Service:OperationManager is started.
14:59:21,960 INFO
service.AbstractService (AbstractService.java:start(104)) - Service:SessionManager is started.
14:59:21,960 INFO
service.AbstractService (AbstractService.java:start(104)) - Service:CLIService is started.
14:59:22,007 INFO
metastore.HiveMetaStore (HiveMetaStore.java:newRawStore(409)) - 0: Opening raw store with implemenation class:org.apache.hadoop.hive.metastore.ObjectStore
14:59:22,032 INFO
metastore.ObjectStore (ObjectStore.java:initialize(222)) - ObjectStore, initialize called
14:59:22,955 INFO
metastore.ObjectStore (ObjectStore.java:getPMF(267)) - Setting MetaStore object pin classes with hive.metastore.cache.pinobjtypes=&Table,StorageDescriptor,SerDeInfo,Partition,Database,Type,FieldSchema,Order&
14:59:23,000 INFO
metastore.ObjectStore (ObjectStore.java:setConf(205)) - Initialized ObjectStore
14:59:23,909 INFO
metastore.HiveMetaStore (HiveMetaStore.java:logInfo(452)) - 0: get_databases: default
14:59:23,912 INFO
HiveMetaStore.audit (HiveMetaStore.java:logAuditEvent(238)) - ugi=hadoop/test84. ip=unknown-ip-addr cmd=get_databases: default
14:59:23,933 INFO
service.AbstractService (AbstractService.java:start(104)) - Service:ThriftCLIService is started.
14:59:23,948 INFO
service.AbstractService (AbstractService.java:start(104)) - Service:HiveServer2 is started.
14:59:24,025 INFO
security.UserGroupInformation (UserGroupInformation.java:loginUserFromKeytab(633)) - Login successful for user hadoop/test84. using keytab file /etc/hadoop.keytab
14:59:24,047 INFO
thrift.ThriftCLIService (ThriftCLIService.java:run(435)) - ThriftCLIService listening on test84.hadoop/10.1.77.84:10000
可以看到在HiveServer2已经变成一个CompisiteService了,它包含了一组service,包括OperationManager,SessionManager,CLIService,ThriftCLIService。并且在初始化的时候会建立HiveMetaStore连接,并调用get_databases命令来测试。最后启动thrift
server,监听在test84.hadoop/10.1.77.84:10000端口上
1. Beeline访问hive server 2
Beeline是hive 0.11引入的新的交互式CLI,它基于SQLLine,可以作为Hive JDBC Client端访问Hive Server 2,启动一个beeline就是维护了一个session。
由于采用了kerberos认证方式,所以需要在本地有kerberos ticket,并且在connection url中指定hive server 2的service principal,此处为principal=hadoop/test84.,另外用户名和密码可以不用填写,之后的语句会以当前ticket cache中principal的用户身份来执行。
-dpsh-3.2$ bin/beeline
Beeline version 0.11.0 by Apache Hive
beeline& !connect jdbc:hive2://test84.hadoop:10000/principal=hadoop/test84.
scan complete in 2ms
Connecting to jdbc:hive2://test84.hadoop:10000/principal=hadoop/test84.
Enter username for jdbc:hive2://test84.hadoop:10000/principal=hadoop/test84.:
Enter password for jdbc:hive2://test84.hadoop:10000/principal=hadoop/test84.:
Connected to: Hive (version 0.11.0)
Driver: Hive (version 0.11.0)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://test84.hadoop:10000/default& select count(1)
1 row selected (29.277 seconds)
0: jdbc:hive2://test84.hadoop:10000/default& !q
Closing: org.apache.hive.jdbc.HiveConnection
thrift client和server会建立一个session handler,有唯一的HandleIdentifier,由SessionManager Service管理,这也就是Hive server 2支持concurrency的方式。每次操作(会有不同的opType,比如EXECUTE_STATEMEN)会生成独立的OperationHandle,也有各自的HandleIdentifier。用户在beeline中输入&!q&会销毁该session,并且销毁相应的资源
ps : 用下来有点不太爽的是执行mapreduce job时候没有执行过程信息,如果是一个执行时间很长的语句,会等很久而没有任何信息反馈。
2. JDBC方式
hive server 1的driver classname是org.apache.hadoop.hive.jdbc.HiveDriver,Hive Server 2的是org.apache.hive.jdbc.HiveDriver,这两个容易混淆
import java.sql.C
import java.sql.DriverM
import java.sql.ResultS
import java.sql.SQLE
import java.sql.S
public class HiveTest {
public static void main(String[] args) throws SQLException {
Class.forName(&org.apache.hive.jdbc.HiveDriver&);
} catch (ClassNotFoundException e) {
e.printStackTrace();
Connection conn = DriverManager
.getConnection(
&jdbc:hive2://test84.hadoop:10000/principal=hadoop/test84.&,
Statement stmt = conn.createStatement();
String sql = &select * from abc&;
System.out.println(&Running: & + sql);
ResultSet res = stmt.executeQuery(sql);
while (res.next()) {
System.out.println(String.valueOf(res.getInt(1)) + &\t&
+ res.getString(2));
作者:lalaguozhe 发表于 16:28:46
阅读:7 评论:0
相关 [hive server 测试] 推荐:
- CSDN博客推荐文章
Hive 0.11 包含了Hive Server 1 和 Hive Server 2,还包含1的原因是为了做到向下兼容性. 从长远来看都会以Hive Server 2作为首选. 1. 配置hive server监听端口和Host. 2. 配置kerberos认证,这样thrift client与hive server 2, hive server 2和hdfs 都由kerberos作认证. 3. 设置impersonation,这样hive server会以提交用户的身份去执行语句,如果设置为false,则会以起hive server daemon的admin user来执行语句. 执行命令$HIVE_HOME/bin/hive --service hiveserver2 会调用org.apache.hive.service.server.HiveServer2的main方法.
- CSDN博客云计算推荐文章
不过在re-apply这个patch后发现,用jdbc client访问hive server对于某些语句返回的是空结果集(HiveQueryResultSet中的fetchedRows是个空集合),中间也没有任何报错. 非常奇怪,通过多次尝试定位出只有一种case的语句会正常返回结果,即类似“select * from xxx where yyy”这种不会起MapReduce Job的语句,其他“show tables/databases”,“select a from xxx”等语句都返回为空结果集. Hive jdbc client(底层是thrift client)在提交一条语句的时候会经历如下过程:.
- CSDN博客推荐文章
Hive join优化. 也可以显示声明进行map join:特别适用于小表join大表的时候,SELECT /*+ MAPJOIN(b) */ a.key, a.value FROM a join b on a.key = b.key. 2.
注意带表分区的join, 如:. 因为hive是先join再where的,所以如果在b中找不到a表的记录,b表中的所以列都会列出null,包括ds列,这样left outer的查询结果与where子句无关了,解决办法:. 3.
怎样写exist/in子句. Hive不支持where子句中的子查询,SQL常用的exist in子句需要改写.
- CSDN博客云计算推荐文章
select a.* from a join b on a.id = b.id
select a.* from a join b on (a.id = b.id and a.department = b.department). 在使用join写查询的时候有一个原则:应该将条目少的表或者子查询放在join操作符的左边. 原因是在join的操做的reduce阶段,位于join操作符左边的表的内容会被加载进入内存,将条目少的表放在左边,可以有效的减少发生OOM错误的几率. hive执行引擎会将HQL“翻译”成为map-reduce任务,如果多张表使用同一列做join则将被翻译成一个reduce,否则将被翻译成多个map-reduce任务.
- 互联网 - ITeye博客
使用Hive有一段时间了,目前发现需要进行优化的较多出现在出现join、distinct的情况下,而且一般都是reduce过程较慢.
Reduce过程比较慢的现象又可以分为两类:. 情形一:map已经达到100%,而reduce阶段一直是99%,属于数据倾斜. 情形二:使用了count(distinct)或者group by的操作,现象是reduce有进度但是进度缓慢,31%-32%-34%...一个附带的提示是使用reduce个数很可能是1. 下面,笔者将以亲身经历的两次优化过程为例,给大家说明下笔者优化的思路及过程:. 情形二(distinct):. T的数据量峰值时候大概在2亿左右,文件大小约10G+,优化的思路:.
- 互联网 - ITeye博客
控制hive任务中的map数: . 1.
通常情况下,作业会通过input的目录产生一个或者多个map任务. 主要的决定因素有: input的文件总个数,input的文件大小,集群设置的文件块大小(目前为128M, 可在hive中通过set dfs.block.命令查看到,该参数不能自定义修改);. a)
假设input目录下有1个文件a,大小为780M,那么hadoop会将该文件a分隔成7个块(6个128m的块和1个12m的块),从而产生7个map数. b)
假设input目录下有3个文件a,b,c,大小分别为10m,20m,130m,那么hadoop会分隔成4个块(10m,20m,128m,2m),从而产生4个map数.
- CSDN博客推荐文章
对于每一个表(table)或者分区,Hive可以进一步组织成桶. Hive也是针对某一列进行桶的组织. Hive采用对列值哈希,然后除以桶的个数求余的方式决定该条记录存放在哪个桶当中. 采用桶能够带来一些好处,比如JOIN操作. 对于JOIN操作两个表有一个相同的列,如果对这两个表都进行了桶操作. 那么将保存相同列值的桶进行JOIN操作就可以,可以大大较少JOIN的数据量. hive中table可以拆分成partition,table和partition可以通过‘CLUSTERED BY ’进一步分bucket,bucket中的数据可以通过‘SORT BY’排序. 提升某些查询操作效率,例如mapside join.
- 淘剑笑的博客
今天遇到一个hive的问题,如下hive
sql:. 该语句中B表有30亿行记录,A表只有100行记录,而且B表中数据倾斜特别严重,有一个key上有15亿行记录,在运行过程中特别的慢,而且在reduece的过程中遇有内存不够而报错. 为了解决用户的这个问题,考虑使用mapjoin,mapjoin的原理:. MAPJION会把小表全部读入内存中,在map阶段直接拿另外一个表的数据和内存中表数据做匹配,由于在map是进行了join操作,省去了reduce运行的效率也会高很多. 这样就不会由于数据倾斜导致某个reduce上落数据太多而失败. 于是原来的sql可以通过使用hint的方式指定join时使用mapjoin.
- 开源软件 - ITeye博客
Hive是将符合SQL语法的字符串解析生成可以在Hadoop上执行的MapReduce的工具. 使用Hive尽量按照分布式计算的一些特点来设计sql,和传统关系型数据库有区别,. 所以需要去掉原有关系型数据库下开发的一些固有思维. 1:尽量尽早地过滤数据,减少每个阶段的数据量,对于分区表要加分区,同时只选择需要使用到的字段. 2:尽量原子化操作,尽量避免一个SQL包含复杂逻辑. 可以使用中间表来完成复杂的逻辑. 3:单个SQL所起的JOB个数尽量控制在5个以下. 4:慎重使用mapjoin,一般行数小于2000行,大小小于1M(扩容后可以适当放大)的表才能使用,小表要注意放在join的左边(目前TCL里面很多都小表放在join的右边).
- 开源软件 - ITeye博客
hive.optimize.cp=true:列裁剪. hive.optimize.prunner:分区裁剪. hive.limit.optimize.enable=true:优化LIMIT n语句. hive.limit.optimize.limit.file=10:最大文件数.   1.job的输入数据大小必须小于参数:hive.exec.mode.local.auto.inputbytes.max(默认128MB).   2.job的map数必须小于参数:hive.exec.mode.local.auto.tasks.max(默认4).   3.job的reduce数必须为0或者1. hive.mapred.local.mem:本地模式启动的JVM内存大小.
坚持分享优质有趣的原创文章,并保留作者信息和版权声明,任何问题请联系:@。hadoop中下面这段Hive的建表语句是什么意思?_百度知道
hadoop中下面这段Hive的建表语句是什么意思?
jpg" esrc="是代表什么意思;和&#39.com/zhidao/wh%3D600%2C800/sign=7d3ded3454fbb2fb347ec9c/4afbfbedab76faecde8。那么://e;\003&#39;ITEMS&nbsp.jpg" />主要不理解的是&nbsp:///zhidao/wh%3D450%2C600/sign=49f19fe9fad66ad125e38/4afbfbedab76faecde8;TERMINATED是用来干嘛的,&#39.hiphotos.;TERMINATED是文件分隔,COLLECTION&/zhidao/pic/item/4afbfbedab76faecde8;\002&#39;\001&#39.jpg" target="_blank" title="点击查看大图" class="ikqb_img_alink"><img class="ikqb_img" src="http.hiphotos?&#39?FILEDS&nbsp://e;ROW用来干嘛的.baidu<a href="http
提问者采纳
&#92;001这些符号是代表特殊符号,&#92;001就相当于Tab吧
提问者评价
其他类似问题
为您推荐:
您可能关注的推广
hadoop的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁今天看啥 热点:
修改表的语句允许改变现有表的结构,通过该语句可以增加列/分区,修改SerDe,增加表和SerDe的属性或者重命名表。与之类&#20284;,修改分区的语句可以改变指定分区的属性。
重命名表的语句如下:
ALTER TABLE table_name RENAME TO new_table_name
修改表属性
修改表属性的语句如下:
ALTER TABLE table_name SET TBLPROPERTIES (property_name = property_value, property_name = property_value,... )
使用该语句可以增加表的元数据,last_modified_by, last_modified_time属性自动被添加和管理,可以使用DESCRIBE EXTENDED
table_name查询新增的表属性。
修改表注释
要修改表的注释,只需要使用上面介绍的修改表属性语句,将property_name指定为'comment'&属性即可:
ALTER TABLE table_name SET TBLPROPERTIES(&#39;comment&#39; = new_comment);
增加SerDe属性
增加SerDe属性的语句如下:
ALTER TABLE table_name SET SERDE serde_class_name [WITH SERDEPROPERTIES serde_properties]
ALTER TABLE table_name SET SERDEPROPERTIES
(property_name = property_value,property_name = property_value, ... )
该语句允许向SerDe对象增加自定义的元数据。SerDe属性在SerDe被Hive初始化时传递给表的SerDe。
修改表的存储属性
ALTER TABLE table_name CLUSTEREDBY (col_name, col_name, ...) [SORTED BY (col_name, ...)] INTO num_buckets BUCKETS
该语句改变表的物理存储属性。
需要注意的时,上述修改表的语句仅修改表的Hive的元数据,不会重新组织或者重新&#26684;式化现存数据,用户需要确定实际的数据布局符合元数据的定义。
新增分区的语句为:
ALTER TABLEtable_name ADD [IF NOT EXISTS] PARTITION partition_spec[LOCATION &#39;location1&#39;] partition_spec [LOCATION &#39;location2&#39;] ...
partition_spec:
:(partition_col = partition_col_value, partition_col = partiton_col_value, ...)
特别地,下面的例子将失败且不会报错,无论指定哪个分区,所有的查询都将在分区dt=''上执行:
ALTER TABLE page_view ADD PARTITION (dt=&#39;&#39;, country=&#39;us&#39;)
location &#39;/path/to/us/part; PARTITION (dt=&#39;&#39;,country=&#39;us&#39;) location &#39;/path/to/us/part;;
假设表不能存在分区而执行新增分区的操作将会提示错误信息:
hive& alter tabletable_properties add partition (address=&#39;china&#39;);
FAILED:SemanticException table is not partitioned but partition spec exists:{address=china}
这是由于在新建表的时候,并没有创建分区列address,所以只有在存在分区列的表上执行增加分区的操作,才会成功。
重命名分区
重命名分区的语句如下:
ALTER TABLE table_name PARTITION partition_spec RENAME TO PARTITION partition_
partition_spec:
:(partition_col = partition_col_value, partition_col = partiton_col_value, ...)
示例代码如下:
department=1/sex=0/howold=23
Time taken:0.349 seconds, Fetched: 1 row(s)
hive& altertable people partition(department=&#39;1&#39;,sex=&#39;0&#39;,howold=23) rename to partition(department=&#39;2&#39;,sex=&#39;1&#39;,howold=24);
Time taken:2.005 seconds
department=2/sex=1/howold=24
Time taken:0.271 seconds, Fetched: 1 row(s)
交换分区的语句如下:
ALTER TABLEtable_name_1 EXCHANGE PARTITION (partition_spec) WITH TABLE table_name_2;
该语句允许将一个分区中的数据移动另一个拥有相同schema但没有那个分区的表中。
恢复分区(MSCKREPAIR TABLE)
Hive在元存储中为每个表存储了一个分区列表,然而如果新分区直接添加到HDFS中(使用hadoop fs –put),Hive不会知道这些分区,除非在每个新添加的分区上执行ALTER TABLEtable_name ADD PARTITION命令。为了避免重复执行上述命令,可以使用如下的命令:
MSCK REPAIR TABLE table_
该语句将把存在于HDFS上但不在元存储上的分区添加到元存储中,示例如下:
hive& dfs -mkdir /user/hive/warehouse/learning.db/people/department=1/sex=0/howold=23;
department=2/sex=1/howold=24
Time taken:0.192 seconds, Fetched: 1 row(s)
hive& msck
Partitions notin metastore:
people:department=1/sex=0/howold=23
Repair: Addedpartition to metastore people:department=1/sex=0/howold=23
Time taken:0.943 seconds, Fetched: 2 row(s)
department=1/sex=0/howold=23
department=2/sex=1/howold=24
Time taken:0.397 seconds, Fetched: 2 row(s)
删除分区的语句为:
ALTER TABLE table_name DROP [IF EXISTS] PARTITION partition_spec,PARTITION partition_spec,...
可以使用上述语句删除表的分区,该语句将会删除指定分区的数据和元数据。对于受NO DROP CASCADE的表,可以使用IGNORE PROTECTION删除指定的分区或一组分区,该语句如下:
ALTER TABLE table_name DROP [IF EXISTS] PARTITION partition_spec IGNORE PROTECTION;
删除分区的例子如下,从该例子可以发现,当删除并不存在的分区时不会提示错误信息。
department=1/sex=0/howold=23
department=2/sex=1/howold=24
Time taken:0.397 seconds, Fetched: 2 row(s)
hive& alter table people drop partition (department=&#39;2&#39;,sex=&#39;2&#39;,howold=24);
Time taken:1.596 seconds
department=1/sex=0/howold=23
department=2/sex=1/howold=24
Time taken:0.227 seconds, Fetched: 2 row(s)
hive& alter table people drop partition (department=&#39;2&#39;,sex=&#39;1&#39;,howold=24);
Dropped the partition department=2/sex=1/howold=24
Time taken:2.267 seconds
department=1/sex=0/howold=23
Time taken:0.191 seconds, Fetched: 1 row(s)
解档/归档分区
ALTER TABLE table_name ARCHIVE PARTITION partition_
ALTER TABLE table_name UNARCHIVE PARTITION partition_
Hive中的归档移动分区中的文件到Hadoop归档中(HAR),该语句只会减少文件的数量,但不提供压缩。
修改表/分区的文件&#26684;式
ALTER TABLE table_name [PARTITION partitionSpec] SET FILEFORMAT file_format
可以使用上述语句修改表或者分区的文件&#26684;式,Hive支持的文件&#26684;式有:SEQUENCEFILE、TEXTFILE、RCFILE&、ORC和INPUTFORMAT input_format_classnameOUTPUTFORMAT output_format_classname,默认的文件&#26684;式为TEXTFILE,由配置参数hive.default.fileformat指定。TEXTFILE指以纯文本文件存储数据,在数据需要压缩时使用SEQUENCEFILE,使用INPUTFORMAT和OUTPUTFORMAT指定输入&#26684;式和输出&#26684;式的类名,比如'org.apache.hadoop.hive.contrib.fileformat.base64.Base64TextInputFormat'。
修改表/分区的文件位置
ALTER TABLE table_name [PARTITIONpartitionSpec] SET LOCATION &newlocation&
修改表/分区的Touch
TOUCH读元数据,然后写回。这能够触发前置或者后者hook的执行,假设是存在一个记录表或者分区修改的hook和直接修改HDFS上文件的外部脚本。由于外部脚本在Hive之外修改文件,修改不会被hook所记录,这是外部脚本可以调用TOUCH以触发hook,然后标记上述表或者分区为已修改的。修改表或者分区的TOUCH语句如下:
ALTER TABLE table_name TOUCH [PARTITION partitionSpec];
修改表/分区的保护
可以在表级或者分区级设置数据保护。启用NO_DROP将保护表或者分区被删除,启用OFFLINE将阻止表或者分区中的数据被查询,但元数据依然可以被访问。如果表中的任何分区启用了NO_DROP,该表也不能被删除。修改表或者分区保护的语句如下:
ALTER TABLE table_name [PARTITION partition_spec] ENABLE|DISABLE NO_DROP;
ALTER TABLE table_name [PARTITION partition_spec] ENABLE|DISABLE OFFLINE;
演示代码及结果如下:
hive& alter table iis enable no_
Time taken: 0.792seconds
FAILED: ExecutionError, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Table iis isprotected from being dropped
hive& alter tab
Time taken: 0.439seconds
hive& select *
FAILED:SemanticException [Error 10113]: Query against an offline table or partitionTable iis
hive& alter tablepeople partition (department=&#39;1&#39;, sex=&#39;0&#39;, howold=23) enable no_
Time taken: 1.23 seconds
FAILED: ExecutionError, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Table peoplePartitiondepartment=1/sex=0/howold=23 is protected from being dropped
修改列名/类型/位置/注释
下面的语句允许修改列名称、列类型、列注释、列位置。该语句仅修改Hive元数据,不会触动表中的数据,用户需要确定实际的数据布局符合元数据的定义。
ALTER TABLE table_name CHANGE [COLUMN] col_old_name col_new_name column_type [COMMENTcol_comment] [FIRST|(AFTER column_name)]
示例代码及结果如下:
hive& alter table people change telephone mobile string comment &#39;change column name&#39;
Time taken: 0.66seconds
changecolumn name
department
# PartitionInformation
# col_name
department
&增加/替换列
增加或者替换列的语句如下,其中ADD COLUMNS在现有列之后但在分区列之前增加新列,REPLACE COLUMNS先删除现存列,然后再增加新列。替换列只能在表使用自带SerDe(DynamicSerDe,MetadataTypedColumnsetSerDe, LazySimpleSerDe and ColumnarSerDe)时使用。
ALTER TABLE table_name ADD|REPLACE COLUMNS (col_name data_type[COMMENT col_comment], ...)
REPLACE COLUMNS也可以用于删除列,例如:
hive& alter table test add columns (e int comment &#39;Add new column e&#39;);
Time taken: 0.395seconds
Add new column e
# PartitionInformation
# col_name
Time taken: 0.209seconds, Fetched: 10 row(s)
hive& alter table test replace columns (a1 string, b1 string, c1 string);
Time taken: 0.994seconds
# PartitionInformation
# col_name
Time taken: 0.232seconds, Fetched: 9 row(s)
需要注意的是该删除仅修改表的schema,但不删除数据。
相关搜索:
相关阅读:
相关频道:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
云计算最近更新

我要回帖

更多关于 硬盘初始化是什么意思 的文章

 

随机推荐