当前位置:   article > 正文

Hive的列分隔符和行分隔符_hive 查看表分隔符

hive 查看表分隔符

在创建Hive表时,默认行分隔符"^A",列分隔符"\n",这两项也是可以设置的。在实际开发中,一般默认使用默认的分隔符,当然有些场景下也会自定义分隔符。

创建表1:

  1. spark-hive
  2. use test_db;
  3. # 创建外部表
  4. CREATE EXTERNAL TABLE test_tb (
  5. user_id bigint COMMENT '用户ID',
  6. user_name string COMMENT '用户名'
  7. )
  8. LOCATION '/home/test_db/test_tb'
  9. ;

查看表1:

  1. show create table test_tb;
  2. 20/04/13 11:47:49 INFO SparkHiveShell: current SQL: show create table test_tb
  3. CREATE EXTERNAL TABLE `test_tb`(
  4. `user_id` bigint COMMENT '用户ID',
  5. `user_name` string COMMENT '用户名')
  6. ROW FORMAT SERDE
  7. 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' # 默认分隔符,行分割符:"\n",列分割符:"^A"
  8. STORED AS INPUTFORMAT
  9. 'org.apache.hadoop.mapred.TextInputFormat' # 默认存储格式textfile
  10. OUTPUTFORMAT
  11. 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' # HDFS存储目录
  12. LOCATION
  13. 'hdfs://namenode.xxx.com:9000/home/test_db/test_tb'
  14. TBLPROPERTIES (
  15. 'transient_lastDdlTime'='1586749208')
  16. Time taken: 1.702 s

创建表2:

  1. CREATE EXTERNAL TABLE test_tb_2 (
  2. user_id bigint COMMENT '用户ID',
  3. user_name string COMMENT '用户名'
  4. )
  5. ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
  6. LINES TERMINATED BY '\n'
  7. LOCATION '/home/test_db/test_tb_2'
  8. ;

查看表2:

  1. show create table test_tb_2;
  2. 20/04/13 11:55:22 INFO SparkHiveShell: current SQL: show create table test_tb_2
  3. CREATE EXTERNAL TABLE `test_tb_2`(
  4. `user_id` bigint COMMENT '用户ID',
  5. `user_name` string COMMENT '用户名')
  6. ROW FORMAT DELIMITED
  7. FIELDS TERMINATED BY '\t' # 列分割符,表2的列分割符为:"\t"
  8. LINES TERMINATED BY '\n' # 行分割符,表2的行分隔符为:"\n"
  9. STORED AS INPUTFORMAT
  10. 'org.apache.hadoop.mapred.TextInputFormat'
  11. OUTPUTFORMAT
  12. 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
  13. LOCATION
  14. 'hdfs://namenode.xxx.com:9000/home/test_db/test_tb_2'
  15. TBLPROPERTIES (
  16. 'transient_lastDdlTime'='1586749805')
  17. Time taken: 2.485 s

从如上两个例子中可以看出:Hive默认的列分隔符类型为“org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe”。

Hive中默认的列分割符为:"^A"(CTRL+V,CTRL+A),在数据文件中为:"1^AJom\n",如果需要自定义分隔符,需要设置 "ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'",因为^A八进制编码为“\001”,如果使用默认的分隔符,可以不加此参数。

Hive中默认行分隔符为"\n",也可以通过"LINES TERMINATED BY '\n' "来设置。

一般来说Hive默认行分隔符为换行符,如果非要自定义分隔符,可以通过定义INPUTFORMAT和OUTPUTFORMAT类来指定特定的(行|列)分隔符。

提示

使用时需要注意:数据中如果包含:"\001","\n"等分隔符,需要提前处理掉。正常在HQL中我们需要REGEXP_REPLACE(字段,'\r|\n|\r\n|\001|\002|\003|\t', '')把常用的分隔符转移掉,免得带来串列,断行的困扰。

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/389857
推荐阅读
相关标签
  

闽ICP备14008679号