见 Hadoop.The.Definitive.Guide.2nd.Edition P388
Thus, the statement:
CREATE TABLE ...;
is identical to the more explicit:
CREATE TABLE ...
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\001'
COLLECTION ITEMS TERMINATED BY '\002'
MAP KEYS TERMINATED BY '\003'
LINES TERMINATED BY '\n'
STORED AS TEXTFILE;
Notice that the octal form of the delimiter characters can be used—001 for Control-A, for instance.
STORED AS TEXTFILE 这个目前可以通过配置文件配置,配置项是hive.default.fileformat。
HiveConf
// Default file format for CREATE TABLE statement
// Options: TextFile, SequenceFile
HIVEDEFAULTFILEFORMAT("hive.default.fileformat", "TextFile"),
其他诸如: FIELD_DELIM、COLLECTION_DELIM、MAPKEY_DELIM、SERIALIZATION_NULL_FORMAT目前无法通过配置文件进行配置:
以LazySimpleSerDe的为例来看:
public class LazySimpleSerDe implements SerDe {
public static final byte[] DefaultSeparators = {(byte) 1, (byte) 2, (byte) 3};
public static SerDeParameters initSerdeParams(Configuration job,
Properties tbl, String serdeName) throws SerDeException {
SerDeParameters serdeParams = new SerDeParameters();
// Read the separators: We use 8 levels of separators by default, but we
// should change this when we allow users to specify more than 10 levels
// of separators through DDL.
serdeParams.separators = new byte[8];
serdeParams.separators[0] = getByte(tbl.getProperty(Constants.FIELD_DELIM,
tbl.getProperty(Constants.SERIALIZATION_FORMAT)), DefaultSeparators[0]);
serdeParams.separators[1] = getByte(tbl
.getProperty(Constants.COLLECTION_DELIM), DefaultSeparators[1]);
serdeParams.separators[2] = getByte(
tbl.getProperty(Constants.MAPKEY_DELIM), DefaultSeparators[2]);
for (int i = 3; i < serdeParams.separators.length; i++) {
serdeParams.separators[i] = (byte) (i + 1);
}
serdeParams.nullString = tbl.getProperty(
Constants.SERIALIZATION_NULL_FORMAT, "\\N");
serdeParams.nullSequence = new Text(serdeParams.nullString);
}
}
Constants: public static final String SERIALIZATION_NULL_FORMAT = "serialization.null.format";
serialization.null.format默认为/N
^A为中间的分隔符也就是001
1^A/N
2^A/N
3^A3
4^A4
5^A5
serdeParams.nullString = tbl.getProperty(
Constants.SERIALIZATION_NULL_FORMAT, "\\N");
早前的版本有个问题见:http://www.linezing.com/blog/?p=500,最新的版本已经修复了该问题。
ALTER TABLE ctas_null_format1 SET SERDEPROPERTIES ('serialization.null.format'='\\N');
分享到:
相关推荐
如果Hive Tasks小于该阈值,则Hive将自动在本地模式运行,默认值为4。 4. hive.auto.convert.join 该参数决定了是否根据输入小表的大小,自动将Reduce端的Common Join转化为Map Join,从而加快大表关联小表的Join...
“各种表创建SQL”这部分将详细讲解CREATE TABLE语句的各种用法,包括创建基本表、分区表、分桶表,以及指定列属性(如是否可为空、默认值、数据类型等)。此外,还有ALTER TABLE语句用于修改已存在的表结构。 ...
Hive 4.0 可能引入了新的配置选项,或者修改了某些默认值。根据官方文档调整相关配置,确保新旧版本之间的平滑过渡。 5. **元数据迁移**:Hive 4.0 可能对元数据存储格式有改动,因此可能需要迁移元数据库。这通常...
hive metastore hive metastore是hive的元数据管理服务,实际应用中很多第三方框架需要访问metastore服务,如spark,impala等。同样hive metastore也提供了java接口。 使用 import org.apache.hadoop.hive.conf....
以下是对Hive的一些关键知识点的详细解释: 1. **数据块(Block)与数据本地化**: - Hive 中的数据存储在 HDFS 中,HDFS 的数据块通常为 128MB 或 256MB。如果一行数据跨越了多个数据块,Hive 需要读取多个块来...
在新版本的Hive中,默认值为more。将该属性设置为none时,所有的查询都会执行MapReduce程序;而设置为more时,则支持SELECT、FILTER和LIMIT查询,还支持TABLESAMPLE和虚拟列。在具体操作中,可以通过执行SET命令来临...
- **默认值**:`/tmp/<user.name>/hive` - **建议设置**:确保有足够的空间,并且访问权限正确。 8. **hive.metastore.warehouse.dir** - **含义**:指定Hive默认的数据文件存储路径,通常应为HDFS可写的路径。 ...
以上是基于“hive”标签的一些基础和高级知识点,但具体的“hive_have_null_id”内容没有提供足够的信息进行详细解释。如果这个文件包含示例代码或教程,可能涉及如何在Hive中处理具有空ID的记录,包括过滤、替换、...
公式为`num_reduce_tasks = min(${hive.exec.reducers.max},${input.size} / ${hive.exec.reducers.bytes.per.reducer})`,其中`hive.exec.reducers.bytes.per.reducer`是每个Reducer处理的字节数,默认值为1GB。...
以下是对Hive的一些关键知识点的详细说明: 1. **Hive 命令行选项** - `-e`: 用于执行单行HQL,无需在末尾添加分号。例如:`hive -e 'select * from name.pokes limit 1' > a.txt`,此命令将查询结果保存到a.txt...
Hive允许用户在创建表时定义列的数据类型,并且在插入数据时会自动进行类型检查。同时,Hive支持数据类型的隐式转换,但在某些情况下可能会导致数据丢失或错误。因此,在编写SQL查询时,应确保操作符两侧的数据类型...
- **Hive.exec.reducers.bytes.per.reducer**:默认值为1GB,用来设置Reduce任务的个数。 - **Hive.exec.reducers.max**:Reduce任务的最大数量,通常为999。 可以通过设置**Hive.exec.reducers.bytes.per.reducer*...
- **Hive.exec.Reducers.bytes.per.Reducer**:每Reduce任务处理的数据量,默认值为1GB。 - **Hive.exec.Reducers.max**:Reduce任务的最大数量,默认值为999。 可以通过调整`Hive.exec.Reducers.bytes.per.Reducer...
+ borrowBookNum (int): 已借书数目,默认值为 0 * 书刊信息表 books: + BookID (char, 10): 书刊编号,主键 + bookName (varchar, 50): 书名 + Author (varchar, 10): 作者 + TypeID (varchar, 10): 该书所属...
* 在 Hive 中,事务表需要指定为 ORC 存储格式。 三、Parquet Parquet 也是列式存储的。Parquet 的特点是: * 建表时需指定 STORED AS PARQUET,文件存储方式为二进制文件。 * 可以使用的压缩方式有 UNCOMPRESSED...
FlinkSql提供了多种方式来连接外部系统,例如文件系统、Kafka、ElasticSearch、MySql、HBase、Hive等。连接外部系统需要传入一个ConnectorDescriptor,也就是connector描述器。对于文件系统的connector而言,Flink...
首先,我们来看一些核心的Spark配置参数: 1. `spark.master`:这个参数定义了Spark应用程序连接的集群管理器。默认值通常是“local”,这意味着在单个JVM上运行Spark。在分布式环境中,可能设置为“yarn”(用于...
根据提供的文件信息,...以上知识点涵盖了Hadoop生态系统中的一些常见操作和概念,包括HDFS命令、Hive的基本使用和HBase的基本操作。在实际工作中,正确使用这些命令和理解相关概念对于高效管理和分析大数据至关重要。