hadoop - 如何获取现有 Hive 表的 SerDe 属性

标签 hadoop hive hiveql

我的同事在 hive 中创建了一个表并添加了一个棘手的 SerDe Regex。我想看看正则表达式是什么,但“SHOW CREATE TABLE”命令没有。

有没有其他方法可以查看创建表时使用的 SERDEPROPERTIES?

例子:

hive> CREATE TABLE foo (
  bar STRING
) 
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
WITH SERDEPROPERTIES ( "input.regex" = "(.*)", "output.format.string" = "%1$s" );

OK
Time taken: 0.078 seconds

hive> SHOW CREATE TABLE foo;
OK
CREATE  TABLE foo(
  bar string COMMENT 'from deserializer')
ROW FORMAT DELIMITED
STORED AS INPUTFORMAT
  'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
  'maprfs:/user/hive/warehouse/foo'
TBLPROPERTIES (
  'transient_lastDdlTime'='1383248078')
Time taken: 0.091 seconds, Fetched: 11 row(s)

我正在使用配置单元 0.11。谢谢!

最佳答案

你可以做一个describe extended,它会显示你的表的所有内容,包括你提到的 serde 属性。

例如你的表:

$ hive -e "describe extended foo"
Detailed Table Information  Table(tableName:foo, dbName:default, owner:cloudera, createTime:1383250992, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:bar, type:string, comment:null)], location:hdfs://localhost.localdomain:8020/user/hive/warehouse/foo, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.contrib.serde2.RegexSerDe, parameters:{output.format.string=%1$s, serialization.format=1, input.regex=(.*)}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], parameters:{transient_lastDdlTime=1383250992}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE)

如果查看返回的对象,您会看到下面有趣的部分:

serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.contrib.serde2.RegexSerDe, parameters:{output.format.string=%1$s, serialization.format=1, input.regex=(.*)})

关于hadoop - 如何获取现有 Hive 表的 SerDe 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19715346/

相关文章:

java - 有没有办法改变 Spark 中 RDD 的复制因子?

hadoop - 同步 Ambari 集群配置

hadoop - 如何在Hive Select之外使用IF else语句?

hadoop - 通过 Bash Shell 创建 Hive 表错误

mysql - 根据值之间的最小差异连接 Hive 表

hadoop - 如何减少基于 View 的查询处理时间?

linux - 无法启动 hadoop 名称节点

java - EC2 : why public DNS works but not public IP? 上的 Hadoop 配置

java - Talend - 无法运行作业 - NoClassDefFoundError

hadoop - 从另一个配置单元表刷新一个配置单元表