见 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表生成工具,Hive表生成工具Hive表生成工具
支持hive 源数据、表结构导出
hive表修改分区数据
Hive表分区,里面有比较详细的Hive表分区方法,希望能够有所帮助。
通过shell脚本,批量把一个库下面的表结构全部导出,在开发环境执行过。
hive的一些报错及解决方法:连接报错、执行脚本卡住、内存溢出报错、表死锁问题
Hive内部表合并小文件Java程序
1.可根据数据库表名批量删除; 2.封装了自定义方法,可根据表明中任意一字段(或多个字段)作为key批量删除 3.解决了权限不足等问题造成的删表不彻底等问题 4.程序为java编写
hive的表数据,可以到我的博客,有建表语句,我的链接是 https://blog.csdn.net/qq_43662627/article/details/121033176
应用spark2.1的api对hive对进行读写,代码中有明确的操作步骤。
如何用Apache Kylin让Hive表查询提速千百倍如何用Apache Kylin让Hive表查询提速千百倍如何用Apache Kylin让Hive表查询提速千百倍
hive 基本操作的命令和hive 实用命令等,有利与学习hive和mysql
建立Hive和Hbase的映射关系,通过Spark将Hive表中数据导入ClickHouse对应的jar包
hive造数据
4 Hive 表相关语句 3 4.1 Hive 建表: 3 4.1.1使用LIKE关键字创建一个与已有表模式相同的新表: 4 4.2 Hive 修改表 4 4.2.1 Hive 新增一个字段: 4 4.2.2 Hive 修改字段名/字段类型/字段位置/字段注释: 4 4.2.3 ...
python脚本访问http接口数据写入hive表
解决kettle使用表输出到hive2时,批量提交不起作用导致速度非常慢的问题,重新编译big-data-plugin插件使表输出支持对hive2批量提交,速度由几十条每秒提升到三千条每秒。
hive metastore hive metastore是hive的元数据管理服务,实际应用中很多第三方框架需要访问metastore服务,如spark,impala等。同样hive metastore也提供了java接口。 使用 import org.apache.hadoop.hive.conf....
02_Hive表批量加载数据的脚本实现(一) 03_Hive表批量加载数据的脚本实现(二) 04_HIve中的case when、cast及unix_timestamp的使用 05_复杂日志分析-需求分析 06_复杂日志分析-需求字段讲解及过滤 07_复杂日志分析...
Hive与Hbase的整合,集中两者的优势,使用HiveQL语言,同时具备了实时性