insert overwrite?insert a cassette
大家好,今天来为大家解答insert overwrite这个问题的一些问题点,包括insert a cassette也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~
怎样设置Insert键
【背景描述】
家里这台机用起来一大不习惯之处就在于键盘的结构(当然,把键盘当成机子的一部分未免过于牵强)。和学校那边那台的主要不同之处就在于中间功能键部分的排列,那一个是3×4的(顶部一排是power、sleep和wakeup),而家里这个是3×3的,更甚的是主键区、功能键区和数字键区三个键区居然是没有间隔的。这样一来,退格键<-和Insert键就并在一块了,这对于误键率极高的我来说简直是一个灾难。退格键按错为Insert键,不但删不了东西,而且把输入状态变成了改写,却又没有状态指示,错上加错,几近崩溃。屡屡的出错终于让我痛下决心,要想方设法解决这个问题。
【问题分析】
Insert键是以前文本命令式操作系统中常用的功能切换按键,用于切换Insert/Overwrite状态。事实上现在用的人已经很少了,只是因为标准和习惯保留了下来,这样的键盘结构设计是不够科学的。在现在这种多媒体系统普及的环境下,比起更多常用的系统功能,Insert键(还有同样极少用到的Scroll Lock、Pause Break等键)早就应该退出它的历史舞台,让位给其他的功能了。
而且,与Caps Lock、Scroll Lock、Num Lock不同,Insert/Overwrite状态完全没有状态指示,只是在一些文本编辑器(如记事本、Word等)的状态栏中有这么一个小格显示状态而已,可是又有谁去注意呢。甚至于没有用过Overwrite状态的人还要郁闷好久,为什么打一个字后面的字会消失了,摸不着头脑。
其实为了改进键盘结构,生产商也不是没有花过心思。近年来新式键盘层出不穷,结构也千变万化,确实都以科学、舒适为出发点。长退格,小回车,多媒体键,等等都是改进措施。但是正因为缺少一个标准,反而让用户无从适应,每换一个键盘都要花上一段时间来习惯。
【解决方法】
搜索一下可以找到一些方法,不外乎下面几种:
1、直接拔掉Insert键的键帽,以绝后患。这么做也太绝了,像我这么爱护东西的人怎么忍心做这种事。
2、用超级兔子设置,超级兔子魔法设置->个性化->键盘->屏蔽/重设键位。失败,还出错(按退格键变成0),原因不解。
3、用软件KeyTransformation,可以屏蔽按键、设置任意按键映射、设置组合键映射、设置按键序列映射等等,功能十分强大。但主要问题是必须在软件运行时设置才会起作用,不爽。
4、用软件KeyTweak,可以通过修改注册表的方法屏蔽和重映射键盘键位。这个方法最好,但是我又觉得直接这么做太表层了,应该研究得更深入一点。
下面附一个KeyTweak的下载地址,安装设置过程都很简单很人性化。如果嫌麻烦或者下载不了,可以把下面分隔线内的文本保存为.reg文件,然后执行写入注册表,重启系统即可。
----------我是一条分隔线,请不要复制我----------
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,0e,00,d2,00,0e,00,52,e0,00,00,00,00
----------我是一条分隔线,请不要复制我----------
如果是其他的键位映射,还是老老实实用KeyTweak设置吧,或者看看下面的深入研究部分,也会有相应的解决方案。好,问题到这里基本解决了。
【深入研究】
在KeyTweak中查看映射信息,可以看到下面的对话框。
按照对话框中的信息找到注册表中对应的项HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout,果然有一个键Scancode Map,键值正是对话框中的二进制信息:00,00,00,00,00,00,00,00,03,00,00,00,0e,00,d2,00,0e,00,52,e0,00,00,00,00。搜索一下这个项和键名,找到了一些关于Windows键盘扫描码重映射的文章,这时才一下明朗了。
原来这个键在注册表里是不存在的,创建后重启,系统会自动调用这个键值进行键位扫描码重映射,否则按照默认的映射标准响应键盘事件。下面有两篇文章详细介绍了Windows键位扫描码映射的原理和方法,有兴趣的可以参考研究一下。另一篇是键盘上键位的扫描码表,转为16进制后可以直接用于上面的重映射方法。
hive的几种文件格式
hive文件存储格式包括以下几类:
1、TEXTFILE
2、SEQUENCEFILE
3、RCFILE
4、ORCFILE(0.11以后出现)
其中TEXTFILE为默认格式,建表时不指定默认为这个格式,导入数据时会直接把数据文件拷贝到hdfs上不进行处理;
SEQUENCEFILE,RCFILE,ORCFILE格式的表不能直接从本地文件导入数据,数据要先导入到textfile格式的表中,然后再从表中用insert导入SequenceFile,RCFile,ORCFile表中。
前提创建环境:
hive 0.8
创建一张testfile_table表,格式为textfile。
create table if not exists testfile_table( site string, url string, pv bigint, label string) row format delimited fields terminated by'\t' stored as textfile;
load data local inpath'/app/weibo.txt' overwrite into table textfile_table;
一、TEXTFILE
默认格式,数据不做压缩,磁盘开销大,数据解析开销大。
可结合Gzip、Bzip2使用(系统自动检查,执行查询时自动解压),但使用这种方式,hive不会对数据进行切分,
从而无法对数据进行并行操作。
示例:
create table if not exists textfile_table(
site string,
url string,
pv bigint,
label string)
row format delimited
fields terminated by'\t'stored as textfile;
插入数据操作:set hive.exec.compress.output=true;
set mapred.output.compress=true;
set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;
set io.compression.codecs=org.apache.hadoop.io.compress.GzipCodec;
insert overwrite table textfile_table select* from textfile_table;
二、SEQUENCEFILE
SequenceFile是Hadoop API提供的一种二进制文件支持,其具有使用方便、可分割、可压缩的特点。
SequenceFile支持三种压缩选择:NONE,RECORD,BLOCK。Record压缩率低,一般建议使用BLOCK压缩。
示例:
create table if not exists seqfile_table(
site string,
url string,
pv bigint,
label string)
row format delimited
fields terminated by'\t'stored as sequencefile;
插入数据操作:set hive.exec.compress.output=true;
set mapred.output.compress=true;
set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;
set io.compression.codecs=org.apache.hadoop.io.compress.GzipCodec;
SET mapred.output.compression.type=BLOCK;insert overwrite table seqfile_table select* from textfile_table;
三、RCFILE
RCFILE是一种行列存储相结合的存储方式。首先,其将数据按行分块,保证同一个record在一个块上,避免读一个记录需要读取多个block。其次,块数据列式存储,有利于数据压缩和快速的列存取。
RCFILE文件示例:
create table if not exists rcfile_table(
site string,
url string,
pv bigint,
label string)
row format delimited
fields terminated by'\t'stored as rcfile;
插入数据操作:set hive.exec.compress.output=true;
set mapred.output.compress=true;
set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;
set io.compression.codecs=org.apache.hadoop.io.compress.GzipCodec;
insert overwrite table rcfile_table select* from textfile_table;
四、ORCFILE()
五、再看TEXTFILE、SEQUENCEFILE、RCFILE三种文件的存储情况:
[hadoop@node3~]$ hadoop dfs-dus/user/hive/warehouse/*hdfs://node1:19000/user/hive/warehouse/hbase_table_1 0
hdfs://node1:19000/user/hive/warehouse/hbase_table_2 0
hdfs://node1:19000/user/hive/warehouse/orcfile_table 0
hdfs://node1:19000/user/hive/warehouse/rcfile_table 102638073
hdfs://node1:19000/user/hive/warehouse/seqfile_table 112497695
hdfs://node1:19000/user/hive/warehouse/testfile_table 536799616
hdfs://node1:19000/user/hive/warehouse/textfile_table 107308067
[hadoop@node3~]$ hadoop dfs-ls/user/hive/warehouse/*/-rw-r--r-- 2 hadoop supergroup 51328177 2014-03-20 00:42/user/hive/warehouse/rcfile_table/000000_0-rw-r--r-- 2 hadoop supergroup 51309896 2014-03-20 00:43/user/hive/warehouse/rcfile_table/000001_0-rw-r--r-- 2 hadoop supergroup 56263711 2014-03-20 01:20/user/hive/warehouse/seqfile_table/000000_0-rw-r--r-- 2 hadoop supergroup 56233984 2014-03-20 01:21/user/hive/warehouse/seqfile_table/000001_0-rw-r--r-- 2 hadoop supergroup 536799616 2014-03-19 23:15/user/hive/warehouse/testfile_table/weibo.txt-rw-r--r-- 2 hadoop supergroup 53659758 2014-03-19 23:24/user/hive/warehouse/textfile_table/000000_0.gz-rw-r--r-- 2 hadoop supergroup 53648309 2014-03-19 23:26/user/hive/warehouse/textfile_table/000001_1.gz
总结:
相比TEXTFILE和SEQUENCEFILE,RCFILE由于列式存储方式,数据加载时性能消耗较大,但是具有较好的压缩比和查询响应。数据仓库的特点是一次写入、多次读取,因此,整体来看,RCFILE相比其余两种格式具有较明显的优势。
Hive(五)DML数据操作
语法:
(1)load data:表示加载数据
(2)local:表示从本地加载数据到hive表;否则从HDFS加载数据到hive表
(3)inpath:表示加载数据的路径
(4)overwrite:表示覆盖表中已有数据,否则表示追加
(5)into table:表示加载到哪张表
(6)student:表示具体的表
(7)partition:表示上传到指定分区
案例:
2)导入本地数据
3)查看person表数据
2)清空 person表数据; truncate table person;
3)查看person表清空情况(已经没有数据了)
4)导入 HDFS数据到 person表中
5)重新查询 person表,查看数据情况
2)导入HDFS,无需添加 local
3) row format delimited fields terminated by'\t';
语法:insert into<table><表名><查询语句>
案例:
创建一张新表:create table if not exists person2(id int,name string,phone string);
将 person表中id为 1和3的数据插入到 person2表中。
查询person2表数据
方式二:into overwrite
语法:insert overwrite table<表名><查询语句>
测试之前重新准备一张表
向 person6表中添加数据。
数据结果
注意:使用 insert overwrite后面必须加上 table,否则报错
注意
语法:create table [if not exists]<表名> as<查询语句>
根据查询结果创建表(查询的结果会添加到新创建的表中)
案例:
按照person表的结果创建person3表
查询 person3
注意:使用查询结果创建数据表时,需要加入关键字
管理表
语法:create table [if not exists]<表名>(字段信息) row format delimited fields terminated by<分割符>location<加载数据路径>
案例:加载person表的数据。
查询 person数据加载的地址
创建 person4表并设置 person表的数据路径。
查询 person4表信息;person4中的表数据全部来自于person表。
外部表
创建一个管理表 t1
向管理表t1中添加一条数据
创建t2并指定t1数据的加载地址
查询 t2表
删除 t1表
再次查询 t2表
验证 t1为外部表时,删除t1表时,是否会删除数据。
重新创建 t1表
向t1中添加数据3
创建 t2(原来的给删除了)并指定为外部表,并加载 t1的数据路径
查询 t1表结构(验证是否为外部表
查询 t2数据(有数据2)
删除t1表
查询 t2表(数据并没有删除)
更加深刻理解管理表和外部表之间的区别。
语法:import table<全新的表名> from'<Export导出的地址>';
查询 person_import表
查看家目录,生成了一个 aaa目录,目录中有一个 000000_0文件
查看 000000_0文件;正好是 person表中的数据。
注意:这里的 overwrite并不是可选项(可加不可加),这里必须加上overwrite,否则会报错。
查看 000000_0文件;使用了制表符,对数据进行格式化。
查看/aaa/000000_0文件
查看person_bak文件
语法:hive-e"<sql语句>"><输出路径>
案例:
查看家目录中的 person_bak
语法:export table<表名> to'<HDFS地址>'
案例:将 person表的数据导出到 HDFS/person2中
查看/person2的层次结构
查看/person2/data/person
关于insert overwrite和insert a cassette的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。