hdfs需上传csv文件时hive表的DDL设计

This SerDe works for most CSV data, but does not handle embedded newlines. To use the SerDe, specify the fully qualified class name org.apache.hadoop.hive.serde2.OpenCSVSerde.  

Documentation is based on original documentation at https://github.com/ogrodnek/csv-serde.

Create table, specify CSV properties

CREATE TABLE my_table(a string, b string, ...)

ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'

WITH SERDEPROPERTIES (

   "separatorChar" "\t",

   "quoteChar"     "'",

   "escapeChar"    "\\"

)  

STORED AS TEXTFILE;

Default separator, quote, and escape characters if unspecified

DEFAULT_ESCAPE_CHARACTER \

DEFAULT_QUOTE_CHARACTER  "

DEFAULT_SEPARATOR        ,

For general information about SerDes, see Hive SerDe in the Developer Guide. Also see SerDe for details about input and output processing.

Versions

The CSVSerde has been built and tested against Hive 0.14 and later, and uses Open-CSV 2.3 which is bundled with the Hive distribution.

Hive Versions

Open-CSV Version

Hive 0.14 and later2.3

当我们上传csv文件到hdfs上时,如果hive表以此SerDe建表,可以识别正常的csv文件,比如csv文件内出现有逗号的字符串,是会用引号包括起来,类似"abc,12331",这样的数据hive表可以识别成一个整体,但是如果内容中有出现换行符需要先处理才能正常导入。

此SerDe默认的分隔符为 , 引号为 " 转义字符 \

CREATE TABLE my_table(a string, b string, ...)

ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'

WITH SERDEPROPERTIES (

   "separatorChar" = "\t",

   "quoteChar"     = "'",

   "escapeChar"    = "\\"

)  

STORED AS TEXTFILE;

   separatorChar:分隔符

   quoteChar:引号符

   escapeChar:转义字符
 

<think>好的,我现在要回答用户关于Hive属性的问题。首先,我得回忆一下Hive的基本知识,特别是属性的部分。Hive是建立在Hadoop上的数据仓库工具,用于处理结构化数据,所以结构的设计和属性设置很重要。 用户问的是Hive属性有哪些。可能指的是在创建可以指定的各种属性,比如存储格式、分区、分桶等。可能要分几个大类来介绍。先整理一下常见的属性类别。 首先,存储格式,比如TEXTFILE、ORC、PARQUET这些,不同的格式有不同的优缺点,比如ORC适合压缩和查询性能。然后是分区和分桶,这是Hive优化查询的重要机制。分区可以将数据按某个字段分成不同的目录,分桶则是将数据分成更小的文件,基于哈希。 接下来是的其他属性,比如行格式(行分隔符、字段分隔符)、注释、外部和内部的区别。外部的数据存储在HDFS上,删除不会删除数据,而内部则会。还有的生命周期属性,比如是否临,或者设置的保留间。 另外,的属性还包括SERDE(序列化与反序列化),用于处理数据读写的格式。比如使用OpenCSVSerde来处理CSV文件。还有的压缩属性,比如设置压缩算法来减少存储空间。 可能还要提到的元数据信息,比如存储在Hive Metastore中的信息,比如的创建者、创建间、最后访问间等。以及的保护属性,比如权限设置,访问控制等,但这可能更多是HDFS层面的。 用户可能还想了解如何查看的属性,比如使用DESCRIBE EXTENDED table_name命令,或者通过Hive Metastore的元数据查询。 要确保分类清晰,每个属性类别下有具体的例子和说明。例如,在存储格式里,要说明各个格式的特点和使用场景。在分区和分桶部分,要解释它们的作用和如何设置。 还要注意一些高级属性,比如事务性的属性(ACID支持),这在Hive 0.14之后支持,要配置特定的存储格式(如ORC)和属性(如'transactional'='true')。 可能容易遗漏的点包括:的输入输出格式(INPUTFORMAT和OUTPUTFORMAT),这些在创建指定,影响数据如何读写。还有存储位置属性(LOCATION),指定数据在HDFS中的路径。 总结一下,Hive属性大致可以分为: 1. 存储相关属性(格式、位置、压缩) 2. 结构优化属性(分区、分桶) 3. 元数据属性(注释、创建信息) 4. 序列化与反序列化(SERDE) 5. 类型(外部、内部、临) 6. 事务性支持属性 7. 其他属性(行格式、字段分隔符等) 要确保每个部分都有简明扼要的解释,并举例说明,比如创建DDL语句示例,这样用户更容易理解。同要避免使用过于专业的术语,保持解释的易懂性。 最后,检查是否有遗漏的重要属性,比如的保护机制或生命周期管理相关的属性,或者Hive新版本中引入的属性。例如,是否支持动态分区,或者的缓存设置等。这些可能也属于属性的一部分,要根据用户的背景知识决定是否包含。</think>Hive属性是定义结构和行为的关键参数,主要用于控制数据存储、格式、分区等。以下是常见的分类及说明: --- ### **一、基础属性** 1. **类型** - **内部(Managed Table)** Hive管理数据生命周期,删除数据一起删除。 示例:`CREATE TABLE table_name (...);` - **外部(External Table)** 数据存储在HDFS指定路径,删除仅删除元数据。 示例:`CREATE EXTERNAL TABLE ... LOCATION '/hdfs/path';` - **临(Temporary Table)** 会话级临,会话结束自动删除。 示例:`CREATE TEMPORARY TABLE ...;` 2. **存储格式** - `STORED AS`:指定文件格式,如: - `TEXTFILE`(默认,文本格式) - `ORC`(高效列式存储,支持压缩和索引) - `PARQUET`(列式存储,兼容多种计算框架) - `AVRO`、`SEQUENCEFILE`等。 示例:`STORED AS ORC;` 3. **行格式(Row Format)** - 定义字段分隔符、集合分隔符等: ```sql ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' COLLECTION ITEMS TERMINATED BY ',' MAP KEYS TERMINATED BY ':' ``` --- ### **二、优化属性** 1. **分区(Partitioning)** 按目录划分数据,提升查询效率。 示例:`PARTITIONED BY (dt STRING, country STRING);` 2. **分桶(Bucketing)** 将数据按哈希分散到固定数量的文件中,优化JOIN和采样。 示例:`CLUSTERED BY (user_id) INTO 32 BUCKETS;` 3. **排序(Sorting)** 指定分桶内的排序字段。 示例:`SORTED BY (timestamp DESC) INTO 32 BUCKETS;` --- ### **三、序列化与压缩** 1. **SERDE(序列化/反序列化)** 处理非标准格式数据(如JSON、CSV)。 示例:`ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe';` 2. **压缩属性** - 级压缩:`SET hive.exec.compress.output=true;` - 文件格式压缩(如ORC):`TBLPROPERTIES ("orc.compress"="SNAPPY");` --- ### **四、高级属性** 1. **事务支持(ACID)** Hive 0.14+支持事务配置ORC格式和属性: ```sql CREATE TABLE acid_table (...) STORED AS ORC TBLPROPERTIES ('transactional'='true'); ``` 2. **注释** 添加元数据描述:`COMMENT '用户行为日志';` 3. **存储路径(Location)** 指定HDFS路径:`LOCATION '/hive/warehouse/logs';` 4. **保护属性** 设置权限(HDFS支持): `TBLPROPERTIES ('hive.security.authorization.enabled'='true');` --- ### **五、查看属性** 1. 使用 `DESCRIBE EXTENDED table_name;` 查看详细信息。 2. 查询元数据库(如MySQL中的Hive Metastore)。 --- **示例完整DDL**: ```sql CREATE EXTERNAL TABLE user_logs ( user_id INT, action STRING ) PARTITIONED BY (dt STRING) CLUSTERED BY (user_id) INTO 50 BUCKETS STORED AS ORC LOCATION '/hive/logs' TBLPROPERTIES ( 'orc.compress'='SNAPPY', 'comment'='用户行为日志' ); ``` 通过合理配置属性,可优化存储效率、查询性能和运维管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值